#include <BesMucDigitizer.hh>
Public Member Functions | |
BesMucDigitizer (G4String modName) | |
~BesMucDigitizer () | |
virtual void | Digitize () |
Private Member Functions | |
void | Initialize () |
void | NewDigi (G4int trackIndex, G4int part, G4int seg, G4int layer, G4int strip) |
void | OldDigi () |
void | Smear () |
Private Attributes | |
BesMucDigisCollection * | m_besMucDigisCollection |
G4int | m_stripID [m_nPartMax][m_nSegMax][m_nGapMax][m_nStripMax] |
G4Svc * | m_G4Svc |
NTuple::Tuple * | m_tupleMuc |
NTuple::Item< double > | m_part |
NTuple::Item< double > | m_seg |
NTuple::Item< double > | m_gap |
NTuple::Item< double > | m_strip |
Static Private Attributes | |
static const G4int | m_nPartMax = 3 |
static const G4int | m_nSegMax = 8 |
static const G4int | m_nGapMax = 9 |
static const G4int | m_nStripMax = 112 |
Definition at line 23 of file BesMucDigitizer.hh.
BesMucDigitizer::BesMucDigitizer | ( | G4String | modName | ) |
Definition at line 31 of file BesMucDigitizer.cc.
References G4Svc::GetTupleMuc(), Initialize(), m_besMucDigisCollection, m_G4Svc, m_gap, m_part, m_seg, m_strip, m_tupleMuc, and G4Svc::MucRootFlag().
00032 :G4VDigitizerModule(modName) 00033 { 00034 collectionName.push_back("BesMucDigisCollection"); 00035 m_besMucDigisCollection=0; 00036 00037 //Standard unit: length in mm; time in ns; energy in MeV; att in mm; 00038 //Here: att in mm; vel in m/s; threshold in MeV; mucRes in ps; 00039 00040 00041 //retrieve G4Svc 00042 ISvcLocator* svcLocator = Gaudi::svcLocator(); 00043 IG4Svc* tmpSvc; 00044 StatusCode sc=svcLocator->service("G4Svc", tmpSvc); 00045 m_G4Svc=dynamic_cast<G4Svc *>(tmpSvc); 00046 00047 //get Muc Ntuple from G4Svc 00048 if(m_G4Svc->MucRootFlag()) 00049 { 00050 m_tupleMuc = m_G4Svc->GetTupleMuc(); 00051 sc = m_tupleMuc->addItem("part",m_part); 00052 sc = m_tupleMuc->addItem("seg",m_seg); 00053 sc = m_tupleMuc->addItem("gap",m_gap); 00054 sc = m_tupleMuc->addItem("strip",m_strip); 00055 00056 } 00057 00058 00059 00060 00061 Initialize(); 00062 }
BesMucDigitizer::~BesMucDigitizer | ( | ) |
void BesMucDigitizer::Digitize | ( | ) | [virtual] |
Definition at line 82 of file BesMucDigitizer.cc.
References BesMucDigit::GetGap(), BesMucDigit::GetNearestStripNo(), BesMucDigit::GetPart(), BesMucDigit::GetSeg(), BesMucDigit::GetTrackIndex(), genRecEmupikp::i, Initialize(), m_besMucDigisCollection, m_G4Svc, m_gap, m_part, m_seg, m_strip, m_stripID, m_tupleMuc, G4Svc::MucRootFlag(), NewDigi(), OldDigi(), and BesMucDigit::SetHit().
00083 { 00084 Initialize(); 00085 00086 m_besMucDigisCollection = new BesMucDigisCollection(moduleName, collectionName[0]); 00087 G4DigiManager* DigiMan = G4DigiManager::GetDMpointer(); 00088 00089 //hits collection ID 00090 G4int THCID; 00091 THCID = DigiMan->GetHitsCollectionID("BesMucHitsCollection"); 00092 00093 //hits collection 00094 BesMucHitsCollection* THC = 0; 00095 THC = (BesMucHitsCollection*) (DigiMan->GetHitsCollection(THCID)); 00096 00097 if(THC) { 00098 G4int trackIndex, part, seg, gap, strip; 00099 BesMucDigit *aDigit = new BesMucDigit(); 00100 00101 G4int n_hit = THC->entries(); 00102 for(G4int i = 0; i < n_hit; i++) { 00103 aDigit->SetHit((*THC)[i]); 00104 trackIndex = aDigit->GetTrackIndex(); 00105 part = aDigit->GetPart(); 00106 seg = aDigit->GetSeg(); 00107 gap = aDigit->GetGap(); 00108 strip = aDigit->GetNearestStripNo(); 00109 00110 //fill muc Ntuple 00111 if(m_G4Svc->MucRootFlag()) 00112 { 00113 m_part = part; 00114 m_seg = seg; 00115 m_gap = gap; 00116 m_strip = strip; 00117 00118 m_tupleMuc->write(); 00119 } 00120 00121 (*THC)[i]->SetPart(part); 00122 (*THC)[i]->SetSeg(seg); 00123 (*THC)[i]->SetGap(gap); 00124 (*THC)[i]->SetStrip(strip); 00125 if(m_stripID[part][seg][gap][strip] == 0) { 00126 NewDigi(trackIndex, part, seg, gap, strip); 00127 } 00128 else { 00129 OldDigi(); 00130 } 00131 } 00132 //Smear(); 00133 StoreDigiCollection(m_besMucDigisCollection); 00134 delete aDigit; 00135 } 00136 }
void BesMucDigitizer::Initialize | ( | ) | [private] |
Definition at line 68 of file BesMucDigitizer.cc.
References genRecEmupikp::i, ganga-rec::j, m_nGapMax, m_nPartMax, m_nSegMax, m_nStripMax, and m_stripID.
Referenced by BesMucDigitizer(), and Digitize().
00069 { 00070 for(G4int i = 0; i < m_nPartMax; i++) { 00071 for(G4int j = 0; j < m_nSegMax; j++) { 00072 for(G4int k = 0; k < m_nGapMax; k++) { 00073 for(G4int l = 0; l < m_nStripMax; l++) { 00074 m_stripID[i][j][k][l] = 0; 00075 } 00076 } 00077 } 00078 } 00079 }
void BesMucDigitizer::NewDigi | ( | G4int | trackIndex, | |
G4int | part, | |||
G4int | seg, | |||
G4int | layer, | |||
G4int | strip | |||
) | [private] |
Definition at line 138 of file BesMucDigitizer.cc.
References m_besMucDigisCollection, m_stripID, BesMucDigi::SetGapId(), BesMucDigi::SetPartId(), BesMucDigi::SetSegId(), BesMucDigi::SetStripId(), and BesMucDigi::SetTrackIndex().
Referenced by Digitize().
00139 { 00140 BesMucDigi *digi = new BesMucDigi(); 00141 digi->SetTrackIndex(trackIndex); 00142 digi->SetPartId(part); 00143 digi->SetSegId(seg); 00144 digi->SetGapId(gap); 00145 digi->SetStripId(strip); 00146 m_besMucDigisCollection->insert(digi); 00147 00148 m_stripID[part][seg][gap][strip] = 1; 00149 }
void BesMucDigitizer::OldDigi | ( | ) | [private] |
void BesMucDigitizer::Smear | ( | ) | [private] |
Definition at line 40 of file BesMucDigitizer.hh.
Referenced by BesMucDigitizer(), Digitize(), and NewDigi().
G4Svc* BesMucDigitizer::m_G4Svc [private] |
NTuple::Item<double> BesMucDigitizer::m_gap [private] |
const G4int BesMucDigitizer::m_nGapMax = 9 [static, private] |
const G4int BesMucDigitizer::m_nPartMax = 3 [static, private] |
const G4int BesMucDigitizer::m_nSegMax = 8 [static, private] |
const G4int BesMucDigitizer::m_nStripMax = 112 [static, private] |
NTuple::Item<double> BesMucDigitizer::m_part [private] |
NTuple::Item<double> BesMucDigitizer::m_seg [private] |
NTuple::Item<double> BesMucDigitizer::m_strip [private] |
G4int BesMucDigitizer::m_stripID[m_nPartMax][m_nSegMax][m_nGapMax][m_nStripMax] [private] |
Definition at line 46 of file BesMucDigitizer.hh.
Referenced by Digitize(), Initialize(), and NewDigi().
NTuple::Tuple* BesMucDigitizer::m_tupleMuc [private] |