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

BesMucDigitizer Class Reference

#include <BesMucDigitizer.hh>

List of all members.

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

BesMucDigisCollectionm_besMucDigisCollection
BesMucDigisCollectionm_besMucDigisCollection
G4Svcm_G4Svc
G4Svcm_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


Constructor & Destructor Documentation

BesMucDigitizer::BesMucDigitizer G4String  modName  ) 
 

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  ) 
 

00065 {
00066 }

BesMucDigitizer::BesMucDigitizer G4String  modName  ) 
 

BesMucDigitizer::~BesMucDigitizer  ) 
 


Member Function Documentation

virtual void BesMucDigitizer::Digitize  )  [virtual]
 

void BesMucDigitizer::Digitize  )  [virtual]
 

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]
 

void BesMucDigitizer::Initialize  )  [private]
 

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]
 

void BesMucDigitizer::NewDigi G4int  trackIndex,
G4int  part,
G4int  seg,
G4int  layer,
G4int  strip
[private]
 

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::OldDigi  )  [private]
 

00152 { }

void BesMucDigitizer::Smear  )  [private]
 

void BesMucDigitizer::Smear  )  [private]
 

00155 { }


Member Data Documentation

BesMucDigisCollection* BesMucDigitizer::m_besMucDigisCollection [private]
 

BesMucDigisCollection* BesMucDigitizer::m_besMucDigisCollection [private]
 

G4Svc* BesMucDigitizer::m_G4Svc [private]
 

G4Svc* BesMucDigitizer::m_G4Svc [private]
 

NTuple::Item<double> BesMucDigitizer::m_gap [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_part [private]
 

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

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

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

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

G4int BesMucDigitizer::m_stripID [private]
 

NTuple::Tuple* BesMucDigitizer::m_tupleMuc [private]
 

NTuple::Tuple* BesMucDigitizer::m_tupleMuc [private]
 


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