00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "GaudiKernel/ISvcLocator.h"
00013 #include "GaudiKernel/Bootstrap.h"
00014 #include "GaudiKernel/MsgStream.h"
00015
00016 #include "BesTofDigitizerV.hh"
00017 #include "BesTofDigi.hh"
00018 #include "BesTofHit.hh"
00019 #include "G4DigiManager.hh"
00020 #include "BesTofGeoParameter.hh"
00021 #include "Randomize.hh"
00022
00023 bool BesTofDigitizerV::m_booked = false;
00024
00025 NTuple::Tuple* BesTofDigitizerV::m_tupleTof1 = 0;
00026 NTuple::Item<double> BesTofDigitizerV::m_partId;
00027 NTuple::Item<double> BesTofDigitizerV::m_scinNb;
00028 NTuple::Item<double> BesTofDigitizerV::m_edep;
00029 NTuple::Item<double> BesTofDigitizerV::m_nHits;
00030 NTuple::Item<double> BesTofDigitizerV::m_time1st0;
00031 NTuple::Item<double> BesTofDigitizerV::m_time1st1;
00032 NTuple::Item<double> BesTofDigitizerV::m_timelast0;
00033 NTuple::Item<double> BesTofDigitizerV::m_timelast1;
00034 NTuple::Item<double> BesTofDigitizerV::m_totalPhot0;
00035 NTuple::Item<double> BesTofDigitizerV::m_totalPhot1;
00036 NTuple::Item<double> BesTofDigitizerV::m_NphAllSteps;
00037 NTuple::Item<double> BesTofDigitizerV::m_max0;
00038 NTuple::Item<double> BesTofDigitizerV::m_max1;
00039 NTuple::Item<double> BesTofDigitizerV::m_tdc0;
00040 NTuple::Item<double> BesTofDigitizerV::m_adc0;
00041 NTuple::Item<double> BesTofDigitizerV::m_tdc1;
00042 NTuple::Item<double> BesTofDigitizerV::m_adc1;
00043
00044 NTuple::Tuple* BesTofDigitizerV::m_tupleTof2 = 0;
00045 NTuple::Item<double> BesTofDigitizerV::m_eTotal;
00046 NTuple::Item<double> BesTofDigitizerV::m_nDigi;
00047 NTuple::Item<double> BesTofDigitizerV::m_partIdMPV;
00048 NTuple::Item<double> BesTofDigitizerV::m_scinNbMPV;
00049 NTuple::Item<double> BesTofDigitizerV::m_edepMPV;
00050 NTuple::Item<double> BesTofDigitizerV::m_nDigiOut;
00051
00052 NTuple::Tuple* BesTofDigitizerV::m_tupleTof3 = 0;
00053 NTuple::Item<double> BesTofDigitizerV::m_forb;
00054 NTuple::Item<double> BesTofDigitizerV::m_timeFlight;
00055 NTuple::Item<double> BesTofDigitizerV::m_ddT;
00056 NTuple::Item<double> BesTofDigitizerV::m_scinSwim;
00057 NTuple::Item<double> BesTofDigitizerV::m_scinTime;
00058 NTuple::Item<double> BesTofDigitizerV::m_transitTime;
00059 NTuple::Item<double> BesTofDigitizerV::m_endTime;
00060
00061 NTuple::Item<double> BesTofDigitizerV::m_edepHit;
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083 BesTofDigitizerV::BesTofDigitizerV()
00084 {
00085 IMessageSvc* msgSvc;
00086 Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00087 MsgStream log(msgSvc, "BesTofDigitizerBrV1");
00088
00089 ISvcLocator* svcLocator = Gaudi::svcLocator();
00090
00091
00092
00093
00094
00095
00096
00097
00098 StatusCode sim_scc = svcLocator->service("TofSimSvc", m_tofSimSvc);
00099 if (sim_scc == StatusCode::SUCCESS) {
00100 log << MSG::INFO << "TofSim Gets TofSimSvc Service Sucessfully!! " << endreq;
00101 }
00102 else {
00103 log << MSG::ERROR << "TofSim Gets TofSimSvc Service Failed !! " << endreq;
00104 }
00105 StatusCode qelec_scc = svcLocator->service("TofQElecSvc", m_tofQElecSvc);
00106 if (qelec_scc == StatusCode::SUCCESS) {
00107 log << MSG::INFO << "TofRec Gets tofQElecSvc Sucessfully!! " << endreq;
00108 }
00109 else {
00110 log << MSG::ERROR << "TofRec Gets tofQElecSvc Failed !! " << endreq;
00111 }
00112
00113
00114
00115
00116 IG4Svc* tmpSvc;
00117 StatusCode sc = svcLocator->service("G4Svc", tmpSvc);
00118 m_G4Svc = dynamic_cast<G4Svc *>(tmpSvc);
00119
00120
00121
00122
00123 if (m_G4Svc->TofRootFlag() && (!m_booked))
00124 {
00125
00126
00127 m_tupleTof1 = m_G4Svc->GetTupleTof1();
00128
00129 sc = m_tupleTof1->addItem("partId",m_partId);
00130 sc = m_tupleTof1->addItem("scinNb",m_scinNb);
00131 sc = m_tupleTof1->addItem("edep",m_edep);
00132 sc = m_tupleTof1->addItem("nHits",m_nHits);
00133 sc = m_tupleTof1->addItem("time1st0",m_time1st0);
00134 sc = m_tupleTof1->addItem("time1st1",m_time1st1);
00135 sc = m_tupleTof1->addItem("timelast0",m_timelast0);
00136 sc = m_tupleTof1->addItem("timelast1",m_timelast1);
00137 sc = m_tupleTof1->addItem("totalPhot0",m_totalPhot0);
00138 sc = m_tupleTof1->addItem("totalPhot1",m_totalPhot1);
00139 sc = m_tupleTof1->addItem("NphAllSteps",m_NphAllSteps);
00140 sc = m_tupleTof1->addItem("max0",m_max0);
00141 sc = m_tupleTof1->addItem("max1",m_max1);
00142 sc = m_tupleTof1->addItem("tdc0",m_tdc0);
00143 sc = m_tupleTof1->addItem("adc0",m_adc0);
00144 sc = m_tupleTof1->addItem("tdc1",m_tdc1);
00145 sc = m_tupleTof1->addItem("adc1",m_adc1);
00146
00147
00148
00149 m_tupleTof2 = m_G4Svc->GetTupleTof2();
00150 sc = m_tupleTof2->addItem("eTotal",m_eTotal);
00151 sc = m_tupleTof2->addItem("nDigi",m_nDigi);
00152 sc = m_tupleTof2->addItem("partIdMPV",m_partIdMPV);
00153 sc = m_tupleTof2->addItem("scinNbMPV",m_scinNbMPV);
00154 sc = m_tupleTof2->addItem("edepMPV",m_edepMPV);
00155 sc = m_tupleTof2->addItem("nDigiOut",m_nDigiOut);
00156 sc = m_tupleTof2->addItem("edepPerHit",m_edepHit);
00157
00158 m_tupleTof3 = m_G4Svc->GetTupleTof3();
00159
00160 sc = m_tupleTof3->addItem("timeFlight",m_timeFlight);
00161 sc = m_tupleTof3->addItem("ddT",m_ddT);
00162 sc = m_tupleTof3->addItem("scinSwim",m_scinSwim);
00163 sc = m_tupleTof3->addItem("scinTime",m_scinTime);
00164 sc = m_tupleTof3->addItem("transitTime",m_transitTime);
00165 sc = m_tupleTof3->addItem("endTime",m_endTime);
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181 m_booked = true;
00182 }
00183
00184 }
00185
00186 BesTofDigitizerV::~BesTofDigitizerV()
00187 {;}
00188
00189 void BesTofDigitizerV::Initialize()
00190 {
00191 for (G4int i=0;i<2;i++)
00192 {
00193 m_ADC[i] = -999;
00194 m_TDC[i] = -999;
00195 }
00196 m_trackIndex = -999;
00197 m_globalTime = 9999;
00198 }
00199