Classes | Public Member Functions | Private Attributes | List of all members
detsim::SimCounter35t Class Reference
Inheritance diagram for detsim::SimCounter35t:
art::EDProducer art::detail::Producer art::detail::LegacyModule art::Modifier art::ModuleBase art::ProductRegistryHelper

Classes

struct  chanTick
 

Public Member Functions

 SimCounter35t (fhicl::ParameterSet const &p)
 
 SimCounter35t (SimCounter35t const &)=delete
 
 SimCounter35t (SimCounter35t &&)=delete
 
SimCounter35toperator= (SimCounter35t const &)=delete
 
SimCounter35toperator= (SimCounter35t &&)=delete
 
void produce (art::Event &e) override
 
void beginJob () override
 
- Public Member Functions inherited from art::EDProducer
 EDProducer (fhicl::ParameterSet const &pset)
 
template<typename Config >
 EDProducer (Table< Config > const &config)
 
std::string workerType () const
 
- Public Member Functions inherited from art::detail::Producer
virtual ~Producer () noexcept
 
 Producer (fhicl::ParameterSet const &)
 
 Producer (Producer const &)=delete
 
 Producer (Producer &&)=delete
 
Produceroperator= (Producer const &)=delete
 
Produceroperator= (Producer &&)=delete
 
void doBeginJob ()
 
void doEndJob ()
 
void doRespondToOpenInputFile (FileBlock const &fb)
 
void doRespondToCloseInputFile (FileBlock const &fb)
 
void doRespondToOpenOutputFiles (FileBlock const &fb)
 
void doRespondToCloseOutputFiles (FileBlock const &fb)
 
bool doBeginRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doEndRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doBeginSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEndSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEvent (EventPrincipal &ep, ModuleContext const &mc, std::atomic< std::size_t > &counts_run, std::atomic< std::size_t > &counts_passed, std::atomic< std::size_t > &counts_failed)
 
- Public Member Functions inherited from art::Modifier
 ~Modifier () noexcept
 
 Modifier ()
 
 Modifier (Modifier const &)=delete
 
 Modifier (Modifier &&)=delete
 
Modifieroperator= (Modifier const &)=delete
 
Modifieroperator= (Modifier &&)=delete
 
- Public Member Functions inherited from art::ModuleBase
virtual ~ModuleBase () noexcept
 
 ModuleBase ()
 
ModuleDescription const & moduleDescription () const
 
void setModuleDescription (ModuleDescription const &)
 
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables () const
 
void sortConsumables (std::string const &current_process_name)
 
template<typename T , BranchType BT>
ViewToken< T > consumesView (InputTag const &tag)
 
template<typename T , BranchType BT>
ViewToken< T > mayConsumeView (InputTag const &tag)
 

Private Attributes

std::vector< chanTicktickv
 
std::string fLArG4ModuleLabel
 
bool fMakeTree
 
double fBSUTriggerThreshold
 
double fTSUTriggerThreshold
 
double fTriggerEfficiency
 
double fClockSpeedCounter
 
unsigned int fCombinedTimeDelay
 
TTree * fTree
 
int run
 
int subrun
 
int event
 
int nauxdets
 
uint32_t auxdetid
 
int ntrkids
 
double entryx
 
double entryy
 
double entryz
 
double entryt
 
double exitx
 
double exity
 
double exitz
 
double exitt
 
double exitpx
 
double exitpy
 
double exitpz
 
int trackid
 
double energy
 
CLHEP::RandFlat fFlat
 

Additional Inherited Members

- Public Types inherited from art::EDProducer
using ModuleType = EDProducer
 
using WorkerType = WorkerT< EDProducer >
 
- Public Types inherited from art::detail::Producer
template<typename UserConfig , typename KeysToIgnore = void>
using Table = Modifier::Table< UserConfig, KeysToIgnore >
 
- Public Types inherited from art::Modifier
template<typename UserConfig , typename UserKeysToIgnore = void>
using Table = ProducerTable< UserConfig, detail::ModuleConfig, UserKeysToIgnore >
 
- Static Public Member Functions inherited from art::EDProducer
static void commitEvent (EventPrincipal &ep, Event &e)
 
- Protected Member Functions inherited from art::ModuleBase
ConsumesCollectorconsumesCollector ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > consumes (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 

Detailed Description

Definition at line 43 of file SimCounter35t_module.cc.

Constructor & Destructor Documentation

detsim::SimCounter35t::SimCounter35t ( fhicl::ParameterSet const &  p)
explicit

Definition at line 123 of file SimCounter35t_module.cc.

124  :
125  EDProducer{p},
126  fLArG4ModuleLabel(p.get<std::string>("LArGeantModuleLabel", "largeant")),
127  fMakeTree(p.get<bool>("MakeTree",false)),
128  fBSUTriggerThreshold(p.get<double>("BSUTriggerThreshold",0.5)),// MeV
129  fTSUTriggerThreshold(p.get<double>("TSUTriggerThreshold",0.25)),// MeV
130  fTriggerEfficiency(p.get<double>("TriggerEfficiency",1.)),
131  fClockSpeedCounter(p.get<double>("ClockSpeedCounter",64)), // MHz
132  fCombinedTimeDelay(p.get<double>("CombinedTimeDelay",160)), // ns
133  fFlat(art::ServiceHandle<rndm::NuRandomService>()->createEngine(*this, "HepJamesRandom", "rand"), 0, 1)
134 {
135  produces< std::vector< raw::ExternalTrigger > >();
136 }
base_engine_t & createEngine(seed_t seed)
std::string string
Definition: nybbler.cc:12
EDProducer(fhicl::ParameterSet const &pset)
Definition: EDProducer.h:20
p
Definition: test.py:223
detsim::SimCounter35t::SimCounter35t ( SimCounter35t const &  )
delete
detsim::SimCounter35t::SimCounter35t ( SimCounter35t &&  )
delete

Member Function Documentation

void detsim::SimCounter35t::beginJob ( )
overridevirtual

Reimplemented from art::EDProducer.

Definition at line 359 of file SimCounter35t_module.cc.

360 {
361  // Implementation of optional member function here.
363  if (fMakeTree) {
364  fTree = tfs->make<TTree>("SimCounter35t","SimCounter35t");
365  fTree->Branch("run",&run,"run/I");
366  fTree->Branch("subrun",&subrun,"subrun/I");
367  fTree->Branch("event",&event,"event/I");
368  fTree->Branch("nauxdets",&nauxdets,"nauxdets/I");
369  fTree->Branch("auxdetid",&auxdetid,"auxdetid/I");
370  fTree->Branch("ntrkids",&ntrkids,"ntrkids/I");
371  fTree->Branch("entryx",&entryx,"entryx/D");
372  fTree->Branch("entryy",&entryy,"entryy/D");
373  fTree->Branch("entryz",&entryz,"entryz/D");
374  fTree->Branch("entryt",&entryt,"entryt/D");
375  fTree->Branch("exitx",&exitx,"exitx/D");
376  fTree->Branch("exity",&exity,"exity/D");
377  fTree->Branch("exitz",&exitz,"exitz/D");
378  fTree->Branch("exitt",&exitt,"exitt/D");
379  fTree->Branch("exitpx",&exitpx,"exitpx/D");
380  fTree->Branch("exitpy",&exitpy,"exitpy/D");
381  fTree->Branch("exitpz",&exitpz,"exitpz/D");
382  fTree->Branch("trackid",&trackid,"trackid/D");
383  fTree->Branch("energy",&energy,"energy/D");
384  }
385 }
Event finding and building.
SimCounter35t& detsim::SimCounter35t::operator= ( SimCounter35t const &  )
delete
SimCounter35t& detsim::SimCounter35t::operator= ( SimCounter35t &&  )
delete
void detsim::SimCounter35t::produce ( art::Event e)
overridevirtual

Implements art::EDProducer.

Definition at line 140 of file SimCounter35t_module.cc.

141 {
142  int skippedHitsIneff = 0;
143  int skippedHitsOutRange = 0;
144 
145  auto const clockData = art::ServiceHandle<detinfo::DetectorClocksService const>()->DataFor(e);
146  auto const detProp = art::ServiceHandle<detinfo::DetectorPropertiesService const>()->DataFor(e, clockData);
147 
148  // make unique_ptr that allows ownership of the produced triggers to be transferred to the art::Event after the put statement below
149  std::unique_ptr<std::vector<raw::ExternalTrigger>> trigcol(new std::vector<raw::ExternalTrigger>);
150 
151  run = e.run();
152  subrun = e.subRun();
153  event = e.id().event();
154 
155  // get all auzDetSimChannel information containing AuxDetIDEs
156  std::vector<const sim::AuxDetSimChannel*> fAuxDetSimChannels;
157  e.getView(fLArG4ModuleLabel, fAuxDetSimChannels);
158 
159  nauxdets = fAuxDetSimChannels.size();
160 
161  // loop over all AuxDetSimChannels
162  for (size_t i=0; i<fAuxDetSimChannels.size(); ++i) {
163  const sim::AuxDetSimChannel* c = fAuxDetSimChannels[i];
164  auxdetid = c->AuxDetID();
165 
166  // get AuxDetIDEs associated with sim channel
167  const std::vector<sim::AuxDetIDE>& setOfIDEs = c->AuxDetIDEs();
168  ntrkids = setOfIDEs.size();
169  // if (ntrkids>0) std::cout << auxdetid << " " << ntrkids << std::endl;
170 
171  // loop over all AuxDetIDEs
172  for (size_t j=0; j<setOfIDEs.size(); ++j) {
173 
174  // fill tree
175  if (fMakeTree) {
176  entryx = setOfIDEs[j].entryX;
177  entryy = setOfIDEs[j].entryY;
178  entryz = setOfIDEs[j].entryZ;
179  entryt = setOfIDEs[j].entryT;
180  exitx = setOfIDEs[j].exitX;
181  exity = setOfIDEs[j].exitY;
182  exitz = setOfIDEs[j].exitZ;
183  exitt = setOfIDEs[j].exitT;
184  exitpx = setOfIDEs[j].exitMomentumX;
185  exitpy = setOfIDEs[j].exitMomentumY;
186  exitpz = setOfIDEs[j].exitMomentumZ;
187  energy = setOfIDEs[j].energyDeposited;
188  trackid = setOfIDEs[j].trackID;
189  fTree->Fill();
190  }
191 
192  double randEff = fFlat.fire();
193  if (randEff > fTriggerEfficiency) {
194  ++skippedHitsIneff;
195  continue;
196  }
197 
198  // calculate the time length of one window
199  double triggerOffsetTPC = clockData.TriggerOffsetTPC()*1.e3; // ns
200  double readoutWindowSizeTPC = detProp.ReadOutWindowSize(); // tpc ticks
201  double clockSpeedTPC = clockData.TPCClock().Frequency(); // MHz
202  double windowLength = readoutWindowSizeTPC/clockSpeedTPC; // us
203 
204  // get information from AuxDetIDE
205  double time = setOfIDEs[j].entryT+fCombinedTimeDelay-triggerOffsetTPC; // ns
206  if (time<0 || time>windowLength*1000) {
207  ++skippedHitsOutRange;
208  continue;
209  }
210  uint32_t tickIDE = time*fClockSpeedCounter/1000; // PTB ticks
211  double edepIDE = setOfIDEs[j].energyDeposited*1000;//MeV
212 
213  // loop over tickv to add eDep
215  for (it = tickv.begin(); it != tickv.end(); ++it) {
216  chanTick* ct = &*it;
217  if (ct->tick == tickIDE && ct->auxDetID == auxdetid) {
218  ct->Add(edepIDE);
219  break;
220  }
221  }
222 
223  // if the chanTick doesn't exist already, make one
224  if (it==tickv.end()) {
225  // initialise chanTick with IDE values
226  tickv.push_back(chanTick(tickIDE,auxdetid,edepIDE));
227  }
228  }
229  }
230 
231  // std::cout << "how many? " << tickv.size() << std::endl;
232 
233  // fill collection of raw::ExternalTriggers, if eDep is above threshold
234  std::map<int, int >trigmap;
236  int icount= 0;
237  if (tickv.size()>1) {
238  //std::vector<chanTick>::iterator myend=tickv.end()--;
239  for (it = tickv.begin(); it != tickv.end(); ++it) {
240  chanTick ct = *it;
241 
242  // for c2: auxDetID is always >= 0
243  //if ( (ct.auxDetID >= 44 && ct.auxDetID <= 91 && ct.eDep > fBSUTriggerThreshold) ||
244  // (ct.auxDetID >= 0 && ct.auxDetID <=43 && ct.eDep > fTSUTriggerThreshold) ||
245  if ( (ct.auxDetID >= 44 && ct.auxDetID <= 91 && ct.eDep > fBSUTriggerThreshold) ||
246  (ct.auxDetID <=43 && ct.eDep > fTSUTriggerThreshold) ||
247  (ct.auxDetID >= 92 && ct.eDep > 1.e-6) )
248  {
249  icount++;
250  // std::cout << "hit " << icount << " " << ct.auxDetID << " " <<
251  // ct.tick << " " << ct.eDep << std::endl;
252  // Build triggers from individual hits
253  unsigned int iRM=0; unsigned int iCL=0; unsigned int iNU=0; unsigned int iNL=0;
254  unsigned int iSU=0; unsigned int iSL=0; unsigned int iWU=0; unsigned int iEL=0;
255  trigcol->push_back(raw::ExternalTrigger(ct.auxDetID,ct.tick));
256  if (ct.auxDetID<6) iSL=ct.tick;
257  if (ct.auxDetID>5 && ct.auxDetID<16) iEL=ct.tick;
258  if (ct.auxDetID>15 && ct.auxDetID<22) iNL=ct.tick;
259  if (ct.auxDetID>21 && ct.auxDetID<28) iNU=ct.tick;
260  if (ct.auxDetID>27 && ct.auxDetID<38) iWU=ct.tick;
261  if (ct.auxDetID>37 && ct.auxDetID<44) iSU=ct.tick;
262  if (ct.auxDetID>43 && ct.auxDetID<57) iCL=ct.tick;
263  if (ct.auxDetID>66 && ct.auxDetID<83) iRM=ct.tick;
264  // std::cout << "here 2" << std::endl;
266  if (start != tickv.end()) {
267  for (it2 = start; it2 != tickv.end(); ++it2) {
268  chanTick ct2 = *it2;
269  // for c2: auxDetID is always >= 0
270  //if ( (ct2.auxDetID >= 44 && ct2.auxDetID <= 91
271  //&& ct2.eDep > fBSUTriggerThreshold)
272  // || (ct2.auxDetID >= 0 && ct2.auxDetID <=43
273  if ( (ct2.auxDetID >= 44 && ct2.auxDetID <= 91
274  && ct2.eDep > fBSUTriggerThreshold)
275  || (ct2.auxDetID <=43
276  && ct2.eDep > fTSUTriggerThreshold) ||
277  (ct2.auxDetID >= 92 && ct2.eDep > 1.e-6) ) {
278  float t1 = ct.tick; float t2=ct2.tick;
279  // std::cout << "times " << ct.auxDetID << " " << t1 << " " <<
280  // ct2.auxDetID << " " << t2 << std::endl;
281  float diff = t2-t1; //std::cout << "diff " << fabs(diff) << std::endl;
282  if (fabs(diff)<5) {
283  if (ct2.auxDetID<6) iSL=ct2.tick;
284  if (ct2.auxDetID>5 && ct2.auxDetID<16) iEL=ct2.tick;
285  if (ct2.auxDetID>15 && ct2.auxDetID<22) iNL=ct2.tick;
286  if (ct2.auxDetID>21 && ct2.auxDetID<28) iNU=ct2.tick;
287  if (ct2.auxDetID>27 && ct2.auxDetID<38) iWU=ct2.tick;
288  if (ct2.auxDetID>37 && ct2.auxDetID<44) iSU=ct2.tick;
289  if (ct2.auxDetID>43 && ct2.auxDetID<57) iCL=ct2.tick;
290  if (ct2.auxDetID>66 && ct2.auxDetID<83) iRM=ct2.tick;
291  }
292  }
293  }
294  }
295  float ttime; int trigtick;
296  // std::cout << "NL " << iNL << " SU " << iSU << " NU " << iNU << " SL " << iSL << std::endl;
297  if (iRM>0 && iCL>0) { ttime=0.5*(iRM+iCL)+0.5; trigtick=int(ttime);
298  if (trigmap[trigtick]==0) {trigmap[trigtick]++;trigmap[trigtick+1]++;
299  trigmap[trigtick+2]++;trigmap[trigtick-1]++;trigmap[trigtick-2]++;
300  trigcol->push_back(raw::ExternalTrigger(110,trigtick));
301  // std::cout << "good trig " ;
302  }
303  // std::cout << "RM+CL trigger " << trigtick << std::endl;
304  }
305  if (iEL>0 && iWU>0) { ttime=0.5*(iEL+iWU)+0.5; trigtick=int(ttime);
306  if (trigmap[trigtick]==0) {trigmap[trigtick]++;trigmap[trigtick+1]++;
307  trigmap[trigtick+2]++;trigmap[trigtick-1]++;trigmap[trigtick-2]++;
308  trigcol->push_back(raw::ExternalTrigger(111,trigtick));
309  // std::cout << "good trig " ;
310  }
311  // std::cout << "WU+EL trigger " << trigtick << std::endl;
312  }
313  if (iNU>0 && iSL>0) { ttime=0.5*(iNU+iSL)+0.5; trigtick=int(ttime);
314  if (trigmap[trigtick]==0) {trigmap[trigtick]++;trigmap[trigtick+1]++;
315  trigmap[trigtick+2]++;trigmap[trigtick-1]++;trigmap[trigtick-2]++;
316  trigcol->push_back(raw::ExternalTrigger(112,trigtick));
317  // std::cout << "good trig " ;
318  }
319  // std::cout << "NU+SL trigger " << trigtick << std::endl;
320  }
321  if (iSU>0 && iNL>0) { ttime=0.5*(iSU+iNL)+0.5; trigtick=int(ttime);
322  if (trigmap[trigtick]==0) {trigmap[trigtick]++;trigmap[trigtick+1]++;
323  trigmap[trigtick+2]++;trigmap[trigtick-1]++;trigmap[trigtick-2]++;
324  trigcol->push_back(raw::ExternalTrigger(113,trigtick));
325  // std::cout << "good trig " ;
326  }
327  // std::cout << "SU+NL trigger " << trigtick << std::endl;
328  }
329  }
330  }
331 
332  }// if more than one counter hit
333  // put ExternalTrigger collection into event record
334  e.put(std::move(trigcol));
335 
336 
337  // output hit information for event
338  std::ostringstream out;
339  for (std::vector<chanTick>::iterator it = tickv.begin(); it != tickv.end(); ++it) {
340  chanTick ct = *it;
341  // for c2: auxDetID is always >= 0
342  //if ( (ct.auxDetID >= 44 && ct.auxDetID <= 91 && ct.eDep > fBSUTriggerThreshold) ||
343  // (ct.auxDetID >= 0 && ct.auxDetID <=43 && ct.eDep > fTSUTriggerThreshold) ||
344  if ( (ct.auxDetID >= 44 && ct.auxDetID <= 91 && ct.eDep > fBSUTriggerThreshold) ||
345  (ct.auxDetID <=43 && ct.eDep > fTSUTriggerThreshold) ||
346  (ct.auxDetID >= 92 && ct.eDep > 1.e-6) )
347  out << "AuxDet " << ct.auxDetID << " had " << ct.numHits << " hits at readout tick " << ct.tick << ". Total eDep = " << ct.eDep << " MeV.\n";
348  }
349  if (skippedHitsIneff) out << skippedHitsIneff << " hits were skipped due to counter inefficiency.\n";
350  if (skippedHitsOutRange) out << skippedHitsOutRange << " hits were skipped for being out of TPC window range.\n";
351  mf::LogInfo("SimCounter35t") << out.str();
352 
353  tickv.clear();
354 
355 }
intermediate_table::iterator iterator
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
std::vector< chanTick > tickv
Collection of particles crossing one auxiliary detector cell.
uint32_t AuxDetID() const
unsigned int uint32_t
Definition: stdint.h:126
def move(depos, offset)
Definition: depos.py:107
std::vector< sim::AuxDetIDE > const & AuxDetIDEs() const
SubRunNumber_t subRun() const
Definition: DataViewImpl.cc:89
RunNumber_t run() const
Definition: DataViewImpl.cc:82
EventNumber_t event() const
Definition: EventID.h:116
std::size_t getView(std::string const &moduleLabel, std::string const &productInstanceName, std::string const &processName, std::vector< ELEMENT const * > &result) const
Definition: DataViewImpl.h:565
ProductID put(std::unique_ptr< PROD > &&edp, FullSemantic< Level::Run > const semantic)
Definition: DataViewImpl.h:730
EventID id() const
Definition: Event.cc:37

Member Data Documentation

uint32_t detsim::SimCounter35t::auxdetid
private

Definition at line 102 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::energy
private

Definition at line 116 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::entryt
private

Definition at line 107 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::entryx
private

Definition at line 104 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::entryy
private

Definition at line 105 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::entryz
private

Definition at line 106 of file SimCounter35t_module.cc.

int detsim::SimCounter35t::event
private

Definition at line 100 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::exitpx
private

Definition at line 112 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::exitpy
private

Definition at line 113 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::exitpz
private

Definition at line 114 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::exitt
private

Definition at line 111 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::exitx
private

Definition at line 108 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::exity
private

Definition at line 109 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::exitz
private

Definition at line 110 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::fBSUTriggerThreshold
private

Definition at line 90 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::fClockSpeedCounter
private

Definition at line 93 of file SimCounter35t_module.cc.

unsigned int detsim::SimCounter35t::fCombinedTimeDelay
private

Definition at line 94 of file SimCounter35t_module.cc.

CLHEP::RandFlat detsim::SimCounter35t::fFlat
private

Definition at line 118 of file SimCounter35t_module.cc.

std::string detsim::SimCounter35t::fLArG4ModuleLabel
private

Definition at line 88 of file SimCounter35t_module.cc.

bool detsim::SimCounter35t::fMakeTree
private

Definition at line 89 of file SimCounter35t_module.cc.

TTree* detsim::SimCounter35t::fTree
private

Definition at line 97 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::fTriggerEfficiency
private

Definition at line 92 of file SimCounter35t_module.cc.

double detsim::SimCounter35t::fTSUTriggerThreshold
private

Definition at line 91 of file SimCounter35t_module.cc.

int detsim::SimCounter35t::nauxdets
private

Definition at line 101 of file SimCounter35t_module.cc.

int detsim::SimCounter35t::ntrkids
private

Definition at line 103 of file SimCounter35t_module.cc.

int detsim::SimCounter35t::run
private

Definition at line 98 of file SimCounter35t_module.cc.

int detsim::SimCounter35t::subrun
private

Definition at line 99 of file SimCounter35t_module.cc.

std::vector<chanTick> detsim::SimCounter35t::tickv
private

Definition at line 85 of file SimCounter35t_module.cc.

int detsim::SimCounter35t::trackid
private

Definition at line 115 of file SimCounter35t_module.cc.


The documentation for this class was generated from the following file: