BesRootIO Class Reference

#include <BesRootIO.hh>

List of all members.

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
TMcHitEventm_TMcHitEvent
TMcHitTofm_TMcHitTof
TMcHitMdcm_TMcHitMdc
TEmcDigim_TMmcDigi
G4DigiManager * m_DigiMan


Detailed Description

Definition at line 17 of file BesRootIO.hh.


Constructor & Destructor Documentation

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 (  ) 

Definition at line 60 of file BesRootIO.cc.

References f.

00061 {
00062     f->Write();
00063 }


Member Function Documentation

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]

Definition at line 29 of file BesRootIO.hh.

References m_mdcDigiFlag.


Member Data Documentation

TFile* BesRootIO::f

Definition at line 23 of file BesRootIO.hh.

Referenced by BesRootIO(), and ~BesRootIO().

TTree* BesRootIO::HitTree

Definition at line 24 of file BesRootIO.hh.

Referenced by BesRootIO(), and SaveHitRootEvent().

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]

Definition at line 41 of file BesRootIO.hh.

Referenced by SaveHitRootEvent().

G4int BesRootIO::m_emcTruFlag [private]

Definition at line 40 of file BesRootIO.hh.

G4int BesRootIO::m_mdcDigiFlag [private]

Definition at line 37 of file BesRootIO.hh.

Referenced by SaveHitRootEvent(), and SetMdcDigiFlag().

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]

Definition at line 44 of file BesRootIO.hh.

Referenced by BesRootIO().

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]

Definition at line 39 of file BesRootIO.hh.

Referenced by SaveHitRootEvent().

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.


Generated on Tue Nov 29 23:17:34 2016 for BOSS_7.0.2 by  doxygen 1.4.7