#include <BesMucDigitizer.hh>
Public Member Functions | |
BesMucDigitizer (G4String modName) | |
BesMucDigitizer (G4String modName) | |
virtual void | Digitize () |
virtual void | Digitize () |
~BesMucDigitizer () | |
~BesMucDigitizer () | |
Private Member Functions | |
void | Initialize () |
void | Initialize () |
void | NewDigi (G4int trackIndex, G4int part, G4int seg, G4int layer, G4int strip) |
void | NewDigi (G4int trackIndex, G4int part, G4int seg, G4int layer, G4int strip) |
void | OldDigi () |
void | OldDigi () |
void | Smear () |
void | Smear () |
Private Attributes | |
BesMucDigisCollection * | m_besMucDigisCollection |
BesMucDigisCollection * | m_besMucDigisCollection |
G4Svc * | m_G4Svc |
G4Svc * | m_G4Svc |
NTuple::Item< double > | m_gap |
NTuple::Item< double > | m_gap |
NTuple::Item< double > | m_part |
NTuple::Item< double > | m_part |
NTuple::Item< double > | m_seg |
NTuple::Item< double > | m_seg |
NTuple::Item< double > | m_strip |
NTuple::Item< double > | m_strip |
G4int | m_stripID [m_nPartMax][m_nSegMax][m_nGapMax][m_nStripMax] |
NTuple::Tuple * | m_tupleMuc |
NTuple::Tuple * | m_tupleMuc |
Static Private Attributes | |
const G4int | m_nGapMax = 9 |
const G4int | m_nPartMax = 3 |
const G4int | m_nSegMax = 8 |
const G4int | m_nStripMax = 112 |
|
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 }
|
|
00065 { 00066 }
|
|
|
|
|
|
|
|
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 }
|
|
|
|
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 }
|
|
|
|
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 }
|
|
|
|
00152 { }
|
|
|
|
00155 { }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|