Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:12:01

0001 //////////////////////////////////////////////////////////////////
0002 /*!
0003   \file G4_DSTReader.C
0004   \brief Convert DST to human command readable TTree for quick poke around the outputs
0005   \author  Jin Huang
0006   \version $Revision:  $
0007   \date    $Date: $
0008 */
0009 //////////////////////////////////////////////////////////////////
0010 
0011 #include <string>
0012 
0013 void
0014 G4DSTreader_EICDetector( const char * outputFile = "G4sPHENIXCells.root",//
0015                          int absorberactive = 1, //
0016                          bool do_svtx = true, //
0017                          bool do_cemc = true, //
0018                          bool do_hcalin = true, //
0019                          bool do_magnet = true, //
0020                          bool do_hcalout = true, //
0021                          bool do_cemc_twr = true, //
0022                          bool do_hcalin_twr = true, //
0023                          bool do_magnet = true, //
0024                          bool do_hcalout_twr = true, //
0025                          bool do_FGEM = true, //
0026                          bool do_EGEM = true, //
0027                          bool do_FHCAL = true, //
0028                          bool do_FHCAL_twr = true, //
0029                          bool do_FEMC = true, //
0030                          bool do_FEMC_twr = true, //
0031                          bool do_EEMC = true, //
0032                          bool do_EEMC_twr = true //
0033                          )
0034 {
0035 
0036   //! debug output on screen?
0037   const bool debug = false;
0038 
0039   //! save raw g4 hits
0040   const bool save_g4_raw = true;
0041 
0042   // save a comprehensive  evaluation file
0043   PHG4DSTReader* ana = new PHG4DSTReader(
0044                                          string(outputFile) + string("_DSTReader.root"));
0045   ana->set_save_particle(true);
0046   ana->set_load_all_particle(false);
0047   ana->set_load_active_particle(true);
0048   ana->set_save_vertex(true);
0049 
0050   if (debug)
0051     {
0052       ana->Verbosity(2);
0053     }
0054 
0055   if (save_g4_raw)
0056     {
0057       if (do_svtx)
0058         {
0059           ana->AddNode("SVTX");
0060         }
0061 
0062       if (do_cemc)
0063         {
0064           ana->AddNode("CEMC");
0065           if (absorberactive)
0066             {
0067               ana->AddNode("ABSORBER_CEMC");
0068               ana->AddNode("CEMC_ELECTRONICS");
0069               ana->AddNode("CEMC_SPT");
0070             }
0071         }
0072 
0073       if (do_hcalin)
0074         {
0075           ana->AddNode("HCALIN");
0076           if (absorberactive)
0077             ana->AddNode("ABSORBER_HCALIN");
0078         }
0079 
0080       if (do_magnet)
0081         {
0082           if (absorberactive)
0083             ana->AddNode("MAGNET");
0084         }
0085 
0086       if (do_hcalout)
0087         {
0088           ana->AddNode("HCALOUT");
0089           if (absorberactive)
0090             ana->AddNode("ABSORBER_HCALOUT");
0091         }
0092 
0093       if (do_FHCAL)
0094         {
0095           ana->AddNode("FHCAL");
0096           if (absorberactive)
0097             ana->AddNode("ABSORBER_FHCAL");
0098         }
0099 
0100       if (do_FEMC)
0101         {
0102           ana->AddNode("FEMC");
0103           if (absorberactive)
0104             ana->AddNode("ABSORBER_FEMC");
0105         }
0106 
0107       if (do_EEMC)
0108         {
0109           ana->AddNode("EEMC");
0110           if (absorberactive)
0111             ana->AddNode("ABSORBER_EEMC");
0112         }
0113 
0114       if (do_FGEM)
0115         {
0116           ana->AddNode("FGEM_0");
0117           ana->AddNode("FGEM_1");
0118           ana->AddNode("FGEM_2");
0119           ana->AddNode("FGEM_3");
0120           ana->AddNode("FGEM_4");
0121         }
0122 
0123       if (do_EGEM)
0124         {
0125           ana->AddNode("EGEM_0");
0126           ana->AddNode("EGEM_1");
0127           ana->AddNode("EGEM_2");
0128         }
0129 
0130       ana->AddNode("BH_1");
0131       ana->AddNode("BH_FORWARD_PLUS");
0132       ana->AddNode("BH_FORWARD_NEG");
0133 
0134     }
0135 
0136   ana->set_tower_zero_sup(1e-6);
0137   if (do_cemc_twr)
0138     {
0139       ana->AddTower("SIM_CEMC");
0140       ana->AddTower("RAW_CEMC");
0141       ana->AddTower("CALIB_CEMC");
0142     }
0143   if (do_hcalin_twr)
0144     {
0145       ana->AddTower("SIM_HCALIN");
0146       ana->AddTower("RAW_HCALIN");
0147       ana->AddTower("CALIB_HCALIN");
0148     }
0149   if (do_hcalout_twr)
0150     {
0151       ana->AddTower("SIM_HCALOUT");
0152       ana->AddTower("RAW_HCALOUT");
0153       ana->AddTower("CALIB_HCALOUT");
0154     }
0155   if (do_FHCAL_twr)
0156     {
0157       ana->AddTower("SIM_FHCAL");
0158       ana->AddTower("RAW_FHCAL");
0159       ana->AddTower("CALIB_FHCAL");
0160     }
0161   if (do_FEMC_twr)
0162     {
0163       ana->AddTower("SIM_FEMC");
0164       ana->AddTower("RAW_FEMC");
0165       ana->AddTower("CALIB_FEMC");
0166     }
0167   if (do_EEMC_twr)
0168     {
0169       ana->AddTower("SIM_EEMC");
0170       ana->AddTower("RAW_EEMC");
0171       ana->AddTower("CALIB_EEMC");
0172     }
0173 
0174   // Jets disabled for now
0175   //  if (do_jet_reco)
0176   //    {
0177   //
0178   //      ana->AddJet("AntiKt06JetsInPerfect");
0179   //      ana->AddJet("G4TowerJets_6");
0180   //    }
0181   //  if (embed_input_file && do_jet_reco)
0182   //    {
0183   //      ana->AddJet("G4TowerJets_combined_6");
0184   //    }
0185 
0186   Fun4AllServer *se = Fun4AllServer::instance();
0187   se->registerSubsystem(ana);
0188 }