BesMucDigitizer Class Reference

#include <BesMucDigitizer.hh>

List of all members.

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

BesMucDigisCollectionm_besMucDigisCollection
G4int m_stripID [m_nPartMax][m_nSegMax][m_nGapMax][m_nStripMax]
G4Svcm_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


Detailed Description

Definition at line 23 of file BesMucDigitizer.hh.


Constructor & Destructor Documentation

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

Definition at line 64 of file BesMucDigitizer.cc.

00065 {
00066 }


Member Function Documentation

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]

Definition at line 151 of file BesMucDigitizer.cc.

Referenced by Digitize().

00152 { }

void BesMucDigitizer::Smear (  )  [private]

Definition at line 154 of file BesMucDigitizer.cc.

00155 { }


Member Data Documentation

BesMucDigisCollection* BesMucDigitizer::m_besMucDigisCollection [private]

Definition at line 40 of file BesMucDigitizer.hh.

Referenced by BesMucDigitizer(), Digitize(), and NewDigi().

G4Svc* BesMucDigitizer::m_G4Svc [private]

Definition at line 48 of file BesMucDigitizer.hh.

Referenced by BesMucDigitizer(), and Digitize().

NTuple::Item<double> BesMucDigitizer::m_gap [private]

Definition at line 53 of file BesMucDigitizer.hh.

Referenced by BesMucDigitizer(), and Digitize().

const G4int BesMucDigitizer::m_nGapMax = 9 [static, private]

Definition at line 44 of file BesMucDigitizer.hh.

Referenced by Initialize().

const G4int BesMucDigitizer::m_nPartMax = 3 [static, private]

Definition at line 42 of file BesMucDigitizer.hh.

Referenced by Initialize().

const G4int BesMucDigitizer::m_nSegMax = 8 [static, private]

Definition at line 43 of file BesMucDigitizer.hh.

Referenced by Initialize().

const G4int BesMucDigitizer::m_nStripMax = 112 [static, private]

Definition at line 45 of file BesMucDigitizer.hh.

Referenced by Initialize().

NTuple::Item<double> BesMucDigitizer::m_part [private]

Definition at line 51 of file BesMucDigitizer.hh.

Referenced by BesMucDigitizer(), and Digitize().

NTuple::Item<double> BesMucDigitizer::m_seg [private]

Definition at line 52 of file BesMucDigitizer.hh.

Referenced by BesMucDigitizer(), and Digitize().

NTuple::Item<double> BesMucDigitizer::m_strip [private]

Definition at line 54 of file BesMucDigitizer.hh.

Referenced by BesMucDigitizer(), and Digitize().

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]

Definition at line 50 of file BesMucDigitizer.hh.

Referenced by BesMucDigitizer(), and Digitize().


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