#include <BesRootIO.hh>
Public Member Functions | |
BesRootIO (G4int, G4int, G4int, G4int, G4int, G4int, G4int, G4int, G4String) | |
~BesRootIO () | |
void | SetMdcDigiFlag (G4int flag) |
void | SaveEmcDigiRootEvent () |
void | SaveHitRootEvent (G4int, const G4Event *) |
void | SaveMdcHitRoot () |
void | SaveTofHitRoot () |
Public Attributes | |
TFile * | f |
TTree * | HitTree |
Private Attributes | |
G4int | m_mdcTruFlag |
G4int | m_mdcDigiFlag |
G4int | m_tofTruFlag |
G4int | m_tofDigiFlag |
G4int | m_emcTruFlag |
G4int | m_emcDigiFlag |
G4int | m_mucTruFlag |
G4int | m_mucDigiFlag |
G4String | m_rootFile |
Int_t | m_trackIndex |
TMcHitEvent * | m_TMcHitEvent |
TMcHitTof * | m_TMcHitTof |
TMcHitMdc * | m_TMcHitMdc |
TEmcDigi * | m_TMmcDigi |
G4DigiManager * | m_DigiMan |
Definition at line 17 of file BesRootIO.hh.
BesRootIO::BesRootIO | ( | G4int | , | |
G4int | , | |||
G4int | , | |||
G4int | , | |||
G4int | , | |||
G4int | , | |||
G4int | , | |||
G4int | , | |||
G4String | ||||
) |
Definition at line 40 of file BesRootIO.cc.
References f, HitTree, m_DigiMan, m_rootFile, and m_TMcHitEvent.
00045 :m_mdcTruFlag(mdcTruFlag),m_mdcDigiFlag(mdcDigiFlag), 00046 m_tofTruFlag(tofTruFlag),m_tofDigiFlag(tofDigiFlag), 00047 m_emcTruFlag(emcTruFlag),m_emcDigiFlag(emcDigiFlag), 00048 m_mucTruFlag(mucTruFlag),m_mucDigiFlag(mucDigiFlag),m_rootFile(name) 00049 { 00050 m_DigiMan = G4DigiManager::GetDMpointer(); 00051 00052 f = new TFile(m_rootFile,"RECREATE"); 00053 //create a MdcHit TTree 00054 m_TMcHitEvent = new TMcHitEvent(); 00055 HitTree = new TTree("HitTree","staff data from HitCollection"); 00056 00057 HitTree->Branch("TMcHitEvent", "TMcHitEvent", &m_TMcHitEvent, 32000, 99); 00058 }
BesRootIO::~BesRootIO | ( | ) |
void BesRootIO::SaveEmcDigiRootEvent | ( | ) |
Definition at line 85 of file BesRootIO.cc.
References TMcHitEvent::addMcDigiEmc(), BesEmcDigi::GetEnergy(), BesEmcDigi::GetPartId(), BesEmcDigi::GetPhiNb(), BesEmcDigi::GetThetaNb(), BesEmcDigi::GetTime(), BesEmcDigi::GetTrackIndex(), genRecEmupikp::i, m_DigiMan, m_TMcHitEvent, TMcDigiEmc::SetEnergy(), TMcDigiEmc::SetPartId(), TMcDigiEmc::SetPhiNb(), TMcDigiEmc::SetThetaNb(), TMcDigiEmc::SetTime(), and TMcDigiEmc::SetTrackIndex().
Referenced by SaveHitRootEvent().
00085 { 00086 //std::cout << "SaveEmcDigiRootEvent" << std::endl; 00087 G4int emcDigiCollID = -1; 00088 emcDigiCollID = m_DigiMan->GetDigiCollectionID("BesEmcDigitsCollection"); 00089 if(emcDigiCollID>=0) 00090 { 00091 BesEmcDigitsCollection* emcDC = (BesEmcDigitsCollection*)m_DigiMan->GetDigiCollection(emcDigiCollID); 00092 G4int nHits = emcDC->entries(); 00093 //std::cout << "nHits: " << nHits << std::endl; 00094 00095 if(nHits>0){ 00096 BesEmcDigi* emcDigi; 00097 for (int i = 0; i < nHits; i++) { 00098 emcDigi=(*emcDC)[i]; 00099 TMcDigiEmc* tEmcDigi = new TMcDigiEmc(); 00100 00101 tEmcDigi->SetPartId(emcDigi->GetPartId()); 00102 tEmcDigi->SetThetaNb(emcDigi->GetThetaNb()); 00103 tEmcDigi->SetPhiNb(emcDigi->GetPhiNb()); 00104 tEmcDigi->SetEnergy(emcDigi->GetEnergy()); 00105 tEmcDigi->SetTime(emcDigi->GetTime()); 00106 tEmcDigi->SetTrackIndex(emcDigi->GetTrackIndex()); 00107 //emcDigi->Print(); 00108 //std::cout << "SetEnergy" << emcDigi->GetEnergy() << std::endl; 00109 00110 m_TMcHitEvent->addMcDigiEmc(tEmcDigi); 00111 //std::cout << "addMcDigiEmc" << std::endl; 00112 } 00113 } 00114 } 00115 }
void BesRootIO::SaveHitRootEvent | ( | G4int | , | |
const G4Event * | ||||
) |
Definition at line 65 of file BesRootIO.cc.
References TMcHitEvent::Clear(), HitTree, m_emcDigiFlag, m_mdcDigiFlag, m_TMcHitEvent, m_tofDigiFlag, SaveEmcDigiRootEvent(), SaveMdcHitRoot(), and SaveTofHitRoot().
Referenced by BesEventAction::EndOfEventAction().
00066 { 00067 //std::cout << "Save Hit Root Event" << std::endl; 00068 if (m_mdcDigiFlag) 00069 { 00070 SaveMdcHitRoot(); 00071 } 00072 if (m_tofDigiFlag) 00073 { 00074 SaveTofHitRoot(); 00075 } 00076 if (m_emcDigiFlag){ 00077 SaveEmcDigiRootEvent(); 00078 } 00079 00080 HitTree->Fill(); 00081 00082 m_TMcHitEvent->Clear(); 00083 }
void BesRootIO::SaveMdcHitRoot | ( | ) |
Definition at line 117 of file BesRootIO.cc.
References TMcHitEvent::addMcHitMdc(), BesMdcHit::GetCellNo(), BesMdcHit::GetDriftD(), BesMdcHit::GetDriftT(), BesMdcHit::GetEdep(), BesMdcHit::GetEnterAngle(), BesMdcHit::GetGlobalT(), BesMdcHit::GetLayerNo(), BesMdcHit::GetPos(), BesMdcHit::GetPosFlag(), BesMdcHit::GetTheta(), BesMdcHit::GetTrackID(), genRecEmupikp::i, m_DigiMan, m_TMcHitEvent, TMcHitMdc::SetCellNo(), TMcHitMdc::SetDriftD(), TMcHitMdc::SetDriftT(), TMcHitMdc::SetEdep(), TMcHitMdc::SetEnterAngle(), TMcHitMdc::SetGlobalT(), TMcHitMdc::SetLayerNo(), TMcHitMdc::SetPos(), TMcHitMdc::SetPosFlag(), TMcHitMdc::SetTheta(), and TMcHitMdc::SetTrackID().
Referenced by SaveHitRootEvent().
00118 { 00119 //std::cout << "SaveMdcHitRoot" << std::endl; 00120 G4int THCID = -1; 00121 THCID = m_DigiMan->GetHitsCollectionID("BesMdcHitsCollection"); 00122 if (THCID>=0) 00123 { 00124 BesMdcHitsCollection* mdcDC = (BesMdcHitsCollection*) (m_DigiMan->GetHitsCollection(THCID)); 00125 G4int nHits = mdcDC->entries(); 00126 //std::cout << "nHits: " << nHits << std::endl; 00127 if (nHits>0) 00128 { 00129 BesMdcHit* mdcHit; 00130 for (int i=0;i<nHits;i++) 00131 { 00132 mdcHit=(*mdcDC)[i]; 00133 TMcHitMdc* tMdcHit = new TMcHitMdc(); 00134 tMdcHit->SetTrackID(mdcHit->GetTrackID()); 00135 tMdcHit->SetLayerNo(mdcHit->GetLayerNo()); 00136 tMdcHit->SetCellNo(mdcHit->GetCellNo()); 00137 tMdcHit->SetEdep(mdcHit->GetEdep()); 00138 tMdcHit->SetDriftD(mdcHit->GetDriftD()); 00139 tMdcHit->SetDriftT(mdcHit->GetDriftT()); 00140 tMdcHit->SetGlobalT(mdcHit->GetGlobalT()); 00141 tMdcHit->SetTheta(mdcHit->GetTheta()); 00142 tMdcHit->SetEnterAngle(mdcHit->GetEnterAngle()); 00143 tMdcHit->SetPosFlag(mdcHit->GetPosFlag()); 00144 00145 G4ThreeVector gTemp = mdcHit->GetPos(); 00146 TVector3 tTemp = TVector3(gTemp.x(), gTemp.y(), gTemp.z()); 00147 tMdcHit->SetPos(tTemp); 00148 00149 //mdcHit->Print(); 00150 m_TMcHitEvent->addMcHitMdc(tMdcHit); 00151 } 00152 } 00153 } 00154 00155 00156 }
void BesRootIO::SaveTofHitRoot | ( | ) |
Definition at line 158 of file BesRootIO.cc.
References TMcHitEvent::addMcHitTof(), G4Svc::GetBeamTime(), BesTofHit::GetCharge(), BesTofHit::GetDeltaT(), BesTofHit::GetEdep(), BesTofHit::GetG4Index(), BesTofHit::GetMomentum(), BesTofHit::GetPartId(), BesTofHit::GetPDirection(), BesTofHit::GetPos(), BesTofHit::GetScinNb(), BesTofHit::GetStepL(), BesTofHit::GetTime(), BesTofHit::GetTrackIndex(), BesTofHit::GetTrackL(), genRecEmupikp::i, m_DigiMan, m_TMcHitEvent, ns, TMcHitEvent::setBeamTime(), TMcHitTof::SetCharge(), TMcHitTof::SetDeltaT(), TMcHitTof::SetEdep(), TMcHitTof::SetG4Index(), TMcHitTof::SetMomentum(), TMcHitTof::SetPartId(), TMcHitTof::SetPDirection(), TMcHitTof::SetPos(), TMcHitTof::SetScinNb(), TMcHitTof::SetStepL(), TMcHitTof::SetTime(), TMcHitTof::SetTrackIndex(), and TMcHitTof::SetTrackL().
Referenced by SaveHitRootEvent().
00159 { 00160 //retrieve G4Svc 00161 ISvcLocator* svcLocator = Gaudi::svcLocator(); 00162 IG4Svc* tmpSvc; 00163 StatusCode sc = svcLocator->service("G4Svc", tmpSvc); 00164 G4Svc* m_G4Svc = dynamic_cast<G4Svc *>(tmpSvc); 00165 double m_beamTime = m_G4Svc->GetBeamTime() * ns; 00166 m_TMcHitEvent->setBeamTime(m_beamTime); 00167 //std::cout << "beamtime: " << m_beamTime << std::endl; 00168 00169 G4int THCID = -1; 00170 THCID = m_DigiMan->GetHitsCollectionID("BesTofHitsCollection"); 00171 if (THCID>=0) 00172 { 00173 BesTofHitsCollection* tofDC = (BesTofHitsCollection*) (m_DigiMan->GetHitsCollection(THCID)); 00174 G4int nHits = tofDC->entries(); 00175 //std::cout << "nHits: " << nHits << std::endl; 00176 if (nHits>0) 00177 { 00178 BesTofHit* tofHit; 00179 for (int i=0;i<nHits;i++) 00180 { 00181 tofHit=(*tofDC)[i]; 00182 TMcHitTof* tTofHit = new TMcHitTof(); 00183 tTofHit->SetTrackIndex(tofHit->GetTrackIndex()); 00184 tTofHit->SetG4Index(tofHit->GetG4Index()); 00185 tTofHit->SetPartId(tofHit->GetPartId()); 00186 tTofHit->SetScinNb(tofHit->GetScinNb()); 00187 tTofHit->SetEdep(tofHit->GetEdep()); 00188 tTofHit->SetStepL(tofHit->GetStepL()); 00189 tTofHit->SetTrackL(tofHit->GetTrackL()); 00190 tTofHit->SetTime(tofHit->GetTime()); 00191 tTofHit->SetDeltaT(tofHit->GetDeltaT()); 00192 tTofHit->SetCharge(tofHit->GetCharge()); 00193 00194 G4ThreeVector gTemp = tofHit->GetPos(); 00195 TVector3 tTemp(gTemp.x(), gTemp.y(), gTemp.z()); 00196 tTofHit->SetPos(tTemp); 00197 00198 gTemp = tofHit->GetPDirection(); 00199 tTemp = TVector3(gTemp.x(), gTemp.y(), gTemp.z()); 00200 tTofHit->SetPDirection(tTemp); 00201 00202 gTemp = tofHit->GetMomentum(); 00203 tTemp = TVector3(gTemp.x(), gTemp.y(), gTemp.z()); 00204 tTofHit->SetMomentum(tTemp); 00205 00206 //tofHit->Print(); 00207 m_TMcHitEvent->addMcHitTof(tTofHit); 00208 } 00209 } 00210 } 00211 00212 }
void BesRootIO::SetMdcDigiFlag | ( | G4int | flag | ) | [inline] |
TFile* BesRootIO::f |
TTree* BesRootIO::HitTree |
G4DigiManager* BesRootIO::m_DigiMan [private] |
Definition at line 54 of file BesRootIO.hh.
Referenced by BesRootIO(), SaveEmcDigiRootEvent(), SaveMdcHitRoot(), and SaveTofHitRoot().
G4int BesRootIO::m_emcDigiFlag [private] |
G4int BesRootIO::m_emcTruFlag [private] |
Definition at line 40 of file BesRootIO.hh.
G4int BesRootIO::m_mdcDigiFlag [private] |
G4int BesRootIO::m_mdcTruFlag [private] |
Definition at line 36 of file BesRootIO.hh.
G4int BesRootIO::m_mucDigiFlag [private] |
Definition at line 43 of file BesRootIO.hh.
G4int BesRootIO::m_mucTruFlag [private] |
Definition at line 42 of file BesRootIO.hh.
G4String BesRootIO::m_rootFile [private] |
TMcHitEvent* BesRootIO::m_TMcHitEvent [private] |
Definition at line 49 of file BesRootIO.hh.
Referenced by BesRootIO(), SaveEmcDigiRootEvent(), SaveHitRootEvent(), SaveMdcHitRoot(), and SaveTofHitRoot().
TMcHitMdc* BesRootIO::m_TMcHitMdc [private] |
Definition at line 51 of file BesRootIO.hh.
TMcHitTof* BesRootIO::m_TMcHitTof [private] |
Definition at line 50 of file BesRootIO.hh.
TEmcDigi* BesRootIO::m_TMmcDigi [private] |
Definition at line 52 of file BesRootIO.hh.
G4int BesRootIO::m_tofDigiFlag [private] |
G4int BesRootIO::m_tofTruFlag [private] |
Definition at line 38 of file BesRootIO.hh.
Int_t BesRootIO::m_trackIndex [private] |
Definition at line 47 of file BesRootIO.hh.