Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BesRootIO Class Reference

#include <BesRootIO.hh>

List of all members.

Public Member Functions

 BesRootIO (G4int, G4int, G4int, G4int, G4int, G4int, G4int, G4int, G4String)
 BesRootIO (G4int, G4int, G4int, G4int, G4int, G4int, G4int, G4int, G4String)
void SaveEmcDigiRootEvent ()
void SaveEmcDigiRootEvent ()
void SaveHitRootEvent (G4int, const G4Event *)
void SaveHitRootEvent (G4int, const G4Event *)
void SaveMdcHitRoot ()
void SaveMdcHitRoot ()
void SaveTofHitRoot ()
void SaveTofHitRoot ()
void SetMdcDigiFlag (G4int flag)
void SetMdcDigiFlag (G4int flag)
 ~BesRootIO ()
 ~BesRootIO ()

Public Attributes

TFile * f
TFile * f
TTree * HitTree
TTree * HitTree

Private Attributes

G4DigiManager * m_DigiMan
G4DigiManager * m_DigiMan
G4int m_emcDigiFlag
G4int m_emcTruFlag
G4int m_mdcDigiFlag
G4int m_mdcTruFlag
G4int m_mucDigiFlag
G4int m_mucTruFlag
G4String m_rootFile
TMcHitEventm_TMcHitEvent
TMcHitEventm_TMcHitEvent
TMcHitMdcm_TMcHitMdc
TMcHitMdcm_TMcHitMdc
TMcHitTofm_TMcHitTof
TMcHitTofm_TMcHitTof
TEmcDigim_TMmcDigi
TEmcDigim_TMmcDigi
G4int m_tofDigiFlag
G4int m_tofTruFlag
Int_t m_trackIndex


Constructor & Destructor Documentation

BesRootIO::BesRootIO G4int  ,
G4int  ,
G4int  ,
G4int  ,
G4int  ,
G4int  ,
G4int  ,
G4int  ,
G4String 
 

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  ) 
 

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

BesRootIO::BesRootIO G4int  ,
G4int  ,
G4int  ,
G4int  ,
G4int  ,
G4int  ,
G4int  ,
G4int  ,
G4String 
 

BesRootIO::~BesRootIO  ) 
 


Member Function Documentation

void BesRootIO::SaveEmcDigiRootEvent  ) 
 

void BesRootIO::SaveEmcDigiRootEvent  ) 
 

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 * 
 

void BesRootIO::SaveHitRootEvent G4int  ,
const G4Event * 
 

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  ) 
 

void BesRootIO::SaveMdcHitRoot  ) 
 

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  ) 
 

void BesRootIO::SaveTofHitRoot  ) 
 

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]
 

00029 {m_mdcDigiFlag=flag;}

void BesRootIO::SetMdcDigiFlag G4int  flag  )  [inline]
 

00029 {m_mdcDigiFlag=flag;}


Member Data Documentation

TFile* BesRootIO::f
 

TFile* BesRootIO::f
 

TTree* BesRootIO::HitTree
 

TTree* BesRootIO::HitTree
 

G4DigiManager* BesRootIO::m_DigiMan [private]
 

G4DigiManager* BesRootIO::m_DigiMan [private]
 

G4int BesRootIO::m_emcDigiFlag [private]
 

G4int BesRootIO::m_emcTruFlag [private]
 

G4int BesRootIO::m_mdcDigiFlag [private]
 

G4int BesRootIO::m_mdcTruFlag [private]
 

G4int BesRootIO::m_mucDigiFlag [private]
 

G4int BesRootIO::m_mucTruFlag [private]
 

G4String BesRootIO::m_rootFile [private]
 

TMcHitEvent* BesRootIO::m_TMcHitEvent [private]
 

TMcHitEvent* BesRootIO::m_TMcHitEvent [private]
 

TMcHitMdc* BesRootIO::m_TMcHitMdc [private]
 

TMcHitMdc* BesRootIO::m_TMcHitMdc [private]
 

TMcHitTof* BesRootIO::m_TMcHitTof [private]
 

TMcHitTof* BesRootIO::m_TMcHitTof [private]
 

TEmcDigi* BesRootIO::m_TMmcDigi [private]
 

TEmcDigi* BesRootIO::m_TMmcDigi [private]
 

G4int BesRootIO::m_tofDigiFlag [private]
 

G4int BesRootIO::m_tofTruFlag [private]
 

Int_t BesRootIO::m_trackIndex [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 15:53:09 2011 for BOSS6.5.5 by  doxygen 1.3.9.1