FairRoot/PandaRoot
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
PndLmdNoiseProducer Class Reference

#include <PndLmdNoiseProducer.h>

Inheritance diagram for PndLmdNoiseProducer:
PndMvdNoiseProducer PndPersistencyTask

Public Member Functions

 PndLmdNoiseProducer ()
 
virtual InitStatus Init ()
 
void FillSensorLists ()
 
void SetParContainers ()
 
void Exec (Option_t *opt)
 
Double_t CalcReadoutCycles (Double_t clock)
 
void AddDigiPixel (Int_t &noisies, Int_t iPoint, Int_t sensorID, Int_t fe, Int_t col, Int_t row, Double_t charge)
 
virtual void FinishEvent ()
 
Double_t CalcDistFraction (Double_t spread, Double_t threshold)
 
Int_t CalcChargeAboveThreshold (Double_t spread, Double_t threshold)
 
void AddDigiStrip (Int_t &iStrip, Int_t iPoint, Int_t sensorID, Int_t fe, Int_t chan, Double_t charge)
 
void RunTimeBased ()
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

Protected Member Functions

 ClassDef (PndMvdNoiseProducer, 1)
 

Protected Attributes

Bool_t fTimeOrderedDigi
 parameter to switch to time ordered simulation More...
 
TString fBranchName
 
TClonesArray * fDigiStripArray
 
TClonesArray * fDigiPixelArray
 
PndSdsDigiPixelWriteoutBufferfDigiPixelBuffer
 
PndSdsDigiStripWriteoutBufferfDigiStripBuffer
 
PndSdsStripDigiParfDigiParRect
 
PndSdsStripDigiParfDigiParTrap
 
PndSdsPixelDigiParfDigiParPix
 
PndSdsTotDigiParfTotDigiParRect
 
PndSdsTotDigiParfTotDigiParTrap
 
PndSdsTotDigiParfTotDigiParPix
 
PndGeoHandlingfGeoH
 
FairMCEventHeader * fMCEventheader
 Geometry name handling. More...
 
std::vector< Int_t > fPixelIds2
 
std::vector< Int_t > fPixelIds4
 
std::vector< Int_t > fPixelIds5
 
std::vector< Int_t > fPixelIds6
 
std::vector< Int_t > fStripRectLIds
 
std::vector< Int_t > fStripRectSIds
 
std::vector< Int_t > fStripTrapIds
 
PndSdsChargeConversionfStripRectChargeConv
 
PndSdsChargeConversionfStripTrapChargeConv
 
PndSdsChargeConversionfCurrentChargeConv
 
PndSdsChargeConversionfPixChargeConv
 
Int_t fNoiseSpread
 
Int_t fThreshold
 
Double_t fPreviousTime
 

Private Member Functions

 ClassDef (PndLmdNoiseProducer, 1)
 

Private Attributes

std::vector< Int_t > fPixelIds
 

Detailed Description

PndLmdNoiseProducer.h based on PndMvdNoiseProducer with adaptation to lmd specific calls original

Author
R.Kliemt r.kli.nosp@m.emt@.nosp@m.physi.nosp@m.k.tu.nosp@m.-dres.nosp@m.den..nosp@m.de

The Noise Producer adds fake hits to silicon sensor channels (strips and Pixels) updated: 17/07/2015 by A.Karavdina

Definition at line 23 of file PndLmdNoiseProducer.h.

Constructor & Destructor Documentation

PndLmdNoiseProducer::PndLmdNoiseProducer ( )
inline

Definition at line 26 of file PndLmdNoiseProducer.h.

Member Function Documentation

void PndLmdNoiseProducer::AddDigiPixel ( Int_t &  noisies,
Int_t  iPoint,
Int_t  sensorID,
Int_t  fe,
Int_t  col,
Int_t  row,
Double_t  charge 
)

Definition at line 322 of file PndLmdNoiseProducer.cxx.

References CalcReadoutCycles(), PndSdsChargeConversion::ChargeToDigiValue(), PndMvdNoiseProducer::fDigiParPix, PndMvdNoiseProducer::fDigiPixelBuffer, PndMvdNoiseProducer::fPixChargeConv, PndSdsDigi::GetCharge(), PndSdsPixelDigiPar::GetFeBusClock(), PndSdsChargeConversion::GetTimeStamp(), PndSdsChargeConversion::GetTimeStampErrorAfterCorrection(), and PndSdsChargeConversion::GetTimeWalk().

Referenced by Exec().

323 {
324  //Double_t tempcharge = 0.;
325  //Bool_t found = kFALSE;
326  Int_t detID = -1; //no source mc branch
327 
328  std::vector<Int_t> indices;
329  indices.push_back(iPoint);
330  PndSdsDigiPixel* tempPixel = new PndSdsDigiPixel(indices,detID,sensorID,fe,col,row,fPixChargeConv->ChargeToDigiValue(charge), fPixChargeConv->GetTimeStamp(0, charge,FairRootManager::Instance()->GetEventTime()));//FairRootManager::Instance()->GetEventTime()) ;
331 
332  if (fPixChargeConv->GetTimeWalk((Int_t)tempPixel->GetCharge()) < 1E5){
333  tempPixel->SetTimeStamp(tempPixel->GetTimeStamp() - fPixChargeConv->GetTimeWalk((Int_t)tempPixel->GetCharge()));
334  tempPixel->SetTimeStampError(fPixChargeConv->GetTimeStampErrorAfterCorrection());
335  }
336 
337  if(tempPixel->GetTimeStamp()<0){ //ideal charge converter has fixed time stamp = -1 ns =/
338  int timeSt = gRandom->Integer(CalcReadoutCycles(fDigiParPix->GetFeBusClock())*1000./fDigiParPix->GetFeBusClock());
339  tempPixel->SetTimeStamp(timeSt);
340  }
341 
342  fDigiPixelBuffer->FillNewData(tempPixel,fPixChargeConv->ChargeToDigiValue(charge)*6 + FairRootManager::Instance()->GetEventTime(), FairRootManager::Instance()->GetEventTime());
343  noisies++;
344  delete(tempPixel);
345  // std::cout << "DataInBuffer: " << fDigiPixelBuffer->GetNData() << std::endl;
346 }
int row
Definition: anaLmdDigi.C:67
int col
Definition: anaLmdDigi.C:67
Double_t GetCharge() const
Definition: PndSdsDigi.h:60
virtual Double_t GetTimeStamp(Double_t tof, Double_t charge, Double_t MCEventTime)=0
absolute time stamp of a hit in ns (clock is taken into account)
PndSdsDigiPixelWriteoutBuffer * fDigiPixelBuffer
Double_t GetFeBusClock() const
virtual Double_t GetTimeStampErrorAfterCorrection()
PndSdsChargeConversion * fPixChargeConv
virtual Double_t ChargeToDigiValue(Double_t Charge)=0
Converts a given charge in electrons into the electronics answer e.g. ToT [ns].
PndSdsPixelDigiPar * fDigiParPix
Double_t CalcReadoutCycles(Double_t clock)
int fe
Definition: anaLmdDigi.C:67
Data class to store the digi output of a pixel module.
virtual Double_t GetTimeWalk(Double_t)
void PndMvdNoiseProducer::AddDigiStrip ( Int_t &  iStrip,
Int_t  iPoint,
Int_t  sensorID,
Int_t  fe,
Int_t  chan,
Double_t  charge 
)
inherited

Definition at line 409 of file PndMvdNoiseProducer.cxx.

References PndSdsChargeConversion::ChargeToDigiValue(), PndMvdNoiseProducer::fCurrentChargeConv, and PndMvdNoiseProducer::fDigiStripBuffer.

Referenced by PndMvdNoiseProducer::Exec().

410 {
411  //Double_t tempcharge = 0.;
412  //Bool_t found = kFALSE;
413  Int_t detID = -1; // no source mc branch
414  //PndSdsDigiStrip* aDigi = 0;
415 // FairMCEventHeader* MCevtHeader = (FairMCEventHeader*)FairRootManager::Instance()->GetObject("MCEventHeader.");
416 
417 // if (fTimeOrderedDigi == kFALSE){
418 // Int_t iStrip = fDigiStripArray->GetEntriesFast();
419 //
420 // for(Int_t kstr = 0; kstr < iStrip && found == kFALSE; kstr++)
421 // {
422 // aDigi = (PndSdsDigiStrip*)fDigiStripArray->At(kstr);
423 // if (aDigi->GetSensorID() == sensorID &&
424 // aDigi->GetFE() == fe &&
425 // aDigi->GetChannel() == chan )
426 // {
427 // tempcharge = fCurrentChargeConv->DigiValueToCharge(*aDigi);
428 // aDigi->SetCharge( fCurrentChargeConv->ChargeToDigiValue(charge + tempcharge) );
429 // aDigi->AddIndex(iPoint);
430 // found = kTRUE;
431 // }
432 // }
433 // if(found == kFALSE){
434 // //TODO: get a reasonable timestamp fake for the noise
435 // std::vector<Int_t> indices;
436 // indices.push_back(iPoint);
437 // new ((*fDigiStripArray)[iStrip]) PndSdsDigiStrip(indices,detID,sensorID,fe,chan,fCurrentChargeConv->ChargeToDigiValue(charge), FairRootManager::Instance()->GetEventTime()) ;
438 // noisies++;
439 // if(fVerbose>2) std::cout
440 // << " -I- PndSdsNoiseProducer: Added StripTrap Digi at: FE=" << fe
441 // << ", channel=" << chan << ", charge=" << charge<< " e"
442 // << ", in sensor \n" << sensorID <<std::endl;
443 // }
444 // }
445 // else{
446  std::vector<Int_t> indices;
447  indices.push_back(iPoint);
448  PndSdsDigiStrip* tempStrip = new PndSdsDigiStrip(indices,detID,sensorID,fe,chan,fCurrentChargeConv->ChargeToDigiValue(charge), FairRootManager::Instance()->GetEventTime()) ;
449  noisies++;
450  fDigiStripBuffer->FillNewData(tempStrip, FairRootManager::Instance()->GetEventTime(), FairRootManager::Instance()->GetEventTime() + 10);
451  delete(tempStrip);
452 // }
453 }
Class for digitised strip hits.
PndSdsDigiStripWriteoutBuffer * fDigiStripBuffer
virtual Double_t ChargeToDigiValue(Double_t Charge)=0
Converts a given charge in electrons into the electronics answer e.g. ToT [ns].
int fe
Definition: anaLmdDigi.C:67
PndSdsChargeConversion * fCurrentChargeConv
Int_t PndMvdNoiseProducer::CalcChargeAboveThreshold ( Double_t  spread,
Double_t  threshold 
)
inherited

Definition at line 382 of file PndMvdNoiseProducer.cxx.

References Double_t, log(), and sqrt().

Referenced by PndMvdNoiseProducer::Exec().

383 {
384  // pick any charge from the gaussian tail above threshold
385  Double_t temp=0.;
386  temp = TMath::Gaus(threshold,0,spread); // maximum gauss at threshold
387  temp = gRandom->Uniform(0.,temp); // random value in y
388  temp = -2.*spread*spread*log(temp); // get x value (recalc charge)
389  temp = sqrt(temp);
390  return (Int_t)ceil(temp);
391 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
friend F32vec4 log(const F32vec4 &a)
Definition: P4_F32vec4.h:110
Double_t
double threshold
Double_t PndMvdNoiseProducer::CalcDistFraction ( Double_t  spread,
Double_t  threshold 
)
inherited

Definition at line 376 of file PndMvdNoiseProducer.cxx.

Referenced by Exec(), and PndMvdNoiseProducer::Exec().

377 {
378  // mean fraction of fireing digis
379  return TMath::Erfc( threshold / (TMath::Sqrt2()*spread) );
380 }
double threshold
Double_t PndLmdNoiseProducer::CalcReadoutCycles ( Double_t  clock)

Definition at line 300 of file PndLmdNoiseProducer.cxx.

References Double_t, PndMvdNoiseProducer::fMCEventheader, PndMvdNoiseProducer::fPreviousTime, fVerbose, and printf().

Referenced by AddDigiPixel(), and Exec().

301 { // time [ns], clock [MHz]
302  Double_t cycles=1.;
303  Double_t timewindow=0.;
304  if (clock > 0){
305  if (fMCEventheader!=0) {
306  timewindow = FairRootManager::Instance()->GetEventTime();
307  // cout<<"ev time = "<<FairRootManager::Instance()->GetEventTime()<<" prev.ev time = "<<fPreviousTime<<endl;
308  timewindow -= fPreviousTime;
309  // cout<<"timewindow = "<<timewindow<<endl;
310  } else {
311  timewindow = 50.; // 20 MHz
312  }
313  }
314  //cycles = timewindow*clock/1000.;//CORRECT calculation!
315  cycles = 3;// for event-based reconstruction we assume minimum 3 readout cycles are used in event construction
316  if(fVerbose>10) printf(" -I- PndLmdNoiseProducer::CalcReadoutCycles(): %g cycles (%gMHz,%gns)\n",cycles,clock,timewindow);
317  return cycles;
318 }
int fVerbose
Definition: poormantracks.C:24
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
Double_t
FairMCEventHeader * fMCEventheader
Geometry name handling.
PndLmdNoiseProducer::ClassDef ( PndLmdNoiseProducer  ,
 
)
private
PndMvdNoiseProducer::ClassDef ( PndMvdNoiseProducer  ,
 
)
protectedinherited
void PndLmdNoiseProducer::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Reimplemented from PndMvdNoiseProducer.

Definition at line 174 of file PndLmdNoiseProducer.cxx.

References AddDigiPixel(), PndMvdNoiseProducer::CalcDistFraction(), CalcReadoutCycles(), col, Double_t, PndMvdNoiseProducer::fDigiParPix, fe, fPixelIds, PndMvdNoiseProducer::fPreviousTime, fVerbose, PndLmdDim::Get_instance(), PndLmdDim::Get_sensor_by_id(), PndSdsPixelDigiPar::GetFeBusClock(), PndSdsPixelDigiPar::GetFECols(), PndSdsPixelDigiPar::GetFERows(), PndSdsPixelDigiPar::GetNoise(), PndSdsPixelDigiPar::GetThreshold(), i, and row.

175 {
176  // TObjArray* activeSensors = fGeoPar->GetGeoSensitiveNodes();
177  Int_t nrCh=0,rnd=0,
178  nrFE=0, //sens=0, //[R.K. 01/2017] unused variable?
179  fe=0, //nrSensors=0, //[R.K. 01/2017] unused variable?
180  chanmax=0,chan=0,
181  col=0,row=0,
182  chanwhite=0,
183  charge=0,
184  nNoisyStripRects=0,
185  nNoisyStripTraps=0,
186  nNoisyPixels=0;
187  Double_t xfrac=0.,cycles=1.;
188  Int_t did=-1;
189 
190 
191  // // *** Strip Trapezoids ***
192  // nrCh = fDigiParTrap->GetNrFECh();
193  // nrFE = fDigiParTrap->GetNrBotFE() + fDigiParTrap->GetNrTopFE();
194  // nrSensors = fStripTrapIds.size();
195  // chanmax = nrCh * nrFE * nrSensors;
196  // xfrac = CalcDistFraction(fDigiParTrap->GetNoise(),fDigiParTrap->GetThreshold());
197  // cycles = CalcReadoutCycles(fDigiParTrap->GetFeBusClock());
198  // chanwhite = gRandom->Poisson(xfrac*cycles*chanmax);
199  // if(fVerbose>1) std::cout << " -I- PndLmdNoiseProducer: TRAP <N> = " << xfrac*cycles*chanmax
200  // << " leading to " << chanwhite << " noisy digis of " << chanmax
201  // << " total channels" << std::endl;
202 
203  // for(Int_t i = 0;i < chanwhite;i++)
204  // {
205  // rnd = gRandom->Integer(chanmax);
206  // sens = rnd/(nrFE*nrCh);
207  // rnd = rnd % (nrFE*nrCh);
208  // fe = rnd/nrCh;
209  // chan = rnd % nrCh;
210  // charge = fDigiParTrap->GetThreshold()*6;//CalcChargeAboveThreshold(fDigiParTrap->GetNoise(),fDigiParTrap->GetThreshold());
211  // did = fStripTrapIds[sens];
212  // fCurrentChargeConv = fStripTrapChargeConv;
213  // AddDigiStrip(nNoisyStripTraps,-1,did,fe,chan,charge);
214  // }
215 
216  PndLmdDim& lmd_dim = PndLmdDim::Get_instance();
217  // *** Pixel Sensors ***
219  Int_t pixx=fPixelIds.size();
220  nrFE = pixx;
221  chanmax = nrCh * nrFE;
222  if(fVerbose>2) {
223  std::cout << " found " << nrFE << " sensors " << " with in total " << chanmax << " pixels " << std::endl;
224  }
225  // get the mean number of pixels fired
227  if(fVerbose>2){
228  std::cout << " with a noise of " << fDigiParPix->GetNoise() << " e and a threshold of " << fDigiParPix->GetThreshold()
229  << " e " << xfrac*100 << " % pixels should have fired " << std::endl;
230  }
232  chanwhite = gRandom->Poisson(xfrac*cycles*chanmax);
233  //std::cout << " cycles " << cycles << " chanwhite " << chanwhite << std::endl;
234  if(fVerbose>1) std::cout << " -I- PndLmdNoiseProducer: PIXEL <N> = " << xfrac*cycles*chanmax
235  << " leading to " << chanwhite << " noisy digis of " << chanmax
236  << " total channels" << std::endl;
237  for(Int_t i = 0;i < chanwhite;i++)
238  {
239  // prevent further steps in the software cutting those hits away by applying high charge
240  charge = fDigiParPix->GetThreshold()*6; //CalcChargeAboveThreshold(fDigiParPix->GetNoise(),fDigiParPix->GetThreshold());
241  rnd = gRandom->Integer(chanmax);
242  chan = rnd%nrCh;
243  col = chan%fDigiParPix->GetFECols();
244  row = chan/fDigiParPix->GetFECols();
245  fe = rnd/nrCh;
246  //if (fe < 0 || fe > 399) std::cout << "error! :" << fe << " does not match the total number of channels" << std::endl;
247  did = fPixelIds[fe];
248  /*
249  if(fe >= (Int_t)(pixx) )
250  {
251  fe = fe - pixx;
252  sens = fe/6;
253  did = fPixelIds6[sens];
254  fe = fe%6;
255  //if(fe>6) fe=fe-6+10; //0-9 one row of FE, 10-19 2nd row of FE
256  } else if( fe >= (Int_t)(pixx2 + pixx4) )
257  {
258  fe = fe - pixx2 - pixx4;
259  sens = fe/5;
260  did = fPixelIds5[sens];
261  fe = fe%5;
262  //if(fe>4) fe=fe-4+10; //0-9 one row of FE, 10-19 2nd row of FE
263  } else if( fe >= (Int_t)(pixx2) )
264  {
265  fe = fe -pixx2;
266  sens = fe/4;
267  did = fPixelIds4[sens];
268  fe = fe%4;
269  } else
270  {
271  sens = fe/2;
272  did = fPixelIds2[sens];
273  fe = fe%2;
274  }*/
275 
276  //std::cout << " adding pixel " << i << " of " << chanwhite << std::endl;
277 
278  int ihalf, iplane, imodule, iside, idie, isensor;
279  if (fe < 0 || fe > 399) std::cout << "error! :" << fe << " does not match the total number of channels" << std::endl;
280  if (col > 255 || row > 255 || col < 0 || row < 0)
281  std::cout << "error! :" << fe << " " << did << " " << col << " " << row << " " << charge << std::endl;
282  lmd_dim.Get_sensor_by_id(fe, ihalf, iplane, imodule, iside, idie, isensor);
283  //if (imodule != 0 || ihalf != 0) continue;
284  AddDigiPixel(nNoisyPixels,-1,fe,0,col,row,charge); // fe is abused here for sensID and real fe is set to 0
285  }
286 
287  fPreviousTime = FairRootManager::Instance()->GetEventTime();
288 
289  // *** The End ***
290  if(fVerbose>0)
291  {
292  std::cout <<" -I- PndLmdNoiseProducer: Noise produced\t"
293  <<nNoisyStripRects <<"xStripRect\t"
294  <<nNoisyStripTraps <<"xStripTrap\t"
295  <<nNoisyPixels <<"xPixels"<<std::endl;
296  }
297 }
int row
Definition: anaLmdDigi.C:67
int fVerbose
Definition: poormantracks.C:24
Int_t i
Definition: run_full.C:25
void AddDigiPixel(Int_t &noisies, Int_t iPoint, Int_t sensorID, Int_t fe, Int_t col, Int_t row, Double_t charge)
int col
Definition: anaLmdDigi.C:67
Double_t GetFeBusClock() const
Double_t GetNoise() const
Int_t GetFERows() const
Int_t GetFECols() const
Double_t
void Get_sensor_by_id(const int sensor_id, int &ihalf, int &iplane, int &imodule, int &iside, int &idie, int &isensor)
Definition: PndLmdDim.h:526
PndSdsPixelDigiPar * fDigiParPix
std::vector< Int_t > fPixelIds
Double_t CalcReadoutCycles(Double_t clock)
static PndLmdDim & Get_instance()
Definition: PndLmdDim.cxx:242
int fe
Definition: anaLmdDigi.C:67
Double_t CalcDistFraction(Double_t spread, Double_t threshold)
Double_t GetThreshold() const
void PndLmdNoiseProducer::FillSensorLists ( )

Definition at line 131 of file PndLmdNoiseProducer.cxx.

References PndMvdNoiseProducer::fGeoH, fPixelIds, fVerbose, PndGeoHandling::GetSensorNames(), PndStringSeparator::GetStringVector(), i, and TString.

Referenced by Init().

132 {
133  //std::cout << " ***** initializing sensor lists ******** " << std::endl;
134  TObjArray* sensorNames = fGeoH->GetSensorNames();
135 
136  for (int i = 0; i < sensorNames->GetEntries(); i++)
137  {
138  TString volpath = ((TObjString*)(sensorNames->At(i)))->GetString();
139  //std::cout << " volume path is " << volpath << std::endl;
140  if(!volpath.Contains("Lum")) continue;
141  PndStringSeparator sep(volpath.Data(), "/");
142  std::vector<std::string> volvec = sep.GetStringVector();
143  TString volname = volvec[volvec.size()-1].c_str();
144  if(fVerbose>2)std::cout << "VolName: " << volname.Data();
145  if(volname.Contains("Active"))
146  //std::cout << " found sensor " << volname << std::endl;
147  {
148  // if(volname.Contains("Trap")) {fStripTrapIds.push_back(i); if(fVerbose>2)std::cout << " \tAdded to StripTrap" << std::endl;}
149  if(volname.Contains("Pixel")) {fPixelIds.push_back(i); if(fVerbose>2)std::cout << " \tAdded to Pixel" << std::endl;}
150  }
151  }
152 }
int fVerbose
Definition: poormantracks.C:24
std::vector< std::string > GetStringVector(void)
Int_t i
Definition: run_full.C:25
TObjArray * GetSensorNames()
std::vector< Int_t > fPixelIds
PndGeoHandling * fGeoH
void PndMvdNoiseProducer::FinishEvent ( )
virtualinherited

Definition at line 474 of file PndMvdNoiseProducer.cxx.

475 {
476  // called after all Tasks did their Exex() and the data is copied to the file
477 
478  FinishEvents();
479 }
Bool_t PndPersistencyTask::GetPersistency ( )
inlineinherited

Definition at line 32 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency.

Referenced by PndLmdPixelHitProducerFast::GetPersistance(), PndMdtDigitization::Init(), PndMdtHitProducerIdeal::Init(), PndMdtClusterTask::Init(), PndFtsHitProducerRealFast::Init(), PndDiscTaskReconstruction::Init(), PndRichHitProducer::Init(), PndSttHitProducerRealFast::Init(), PndSttHelixHitProducer::Init(), PndDiscTaskPID::Init(), PndIdealTrackFinder::Init(), PndSttMvdGemTracking::Init(), PndMdtTrkProducer::Init(), PndFtsHitProducerRealFull::Init(), PndLmdPixelClusterTask::Init(), PndSttHitProducerRealFull::Init(), PndLmdStripClusterTask::Init(), PndEmcApdHitProducer::Init(), PndMissingPzCleanerTask::Init(), PndEmcMakeRecoHit::Init(), PndEmcMakeClusterOnline::Init(), PndTrackSmearTask::Init(), PndEmcFWEndcapTimebasedWaveforms::Init(), PndSttHitProducerIdeal::Init(), PndEmcFWEndcapDigi::Init(), PndFtsHitProducerIdeal::Init(), PndEmcMakeCluster::Init(), PndMdtPointsToWaveform::Init(), PndDiscTaskDigitization::Init(), PndEmcMakeDigi::Init(), PndSdsTimeWalkCorrTask::Init(), PndLmdPixelHitProducerFast::Init(), PndDrcHitFinder::Init(), PndRichHitFinder::Init(), PndEmcMakeCorr::Init(), PndFtofHitProducerIdeal::Init(), PndEmcHitsToWaveform::Init(), PndSciTDigiTask::Init(), PndDrcHitProducerIdeal::Init(), PndSdsHitProducerIdeal::Init(), PndSciTHitProducerIdeal::Init(), PndRecoMultiKalmanTask2::Init(), PndEmcHitProducer::Init(), PndDrcHitProducerReal::Init(), PndDskFLGHitProducerIdeal::Init(), PndEmcTmpWaveformToDigi::Init(), PndDrcDigiTask::Init(), PndEmcWaveformToDigi::Init(), PndSttMatchTracks::Init(), PndEmcWaveformToCalibratedDigi::Init(), PndTrkTracking2::Init(), PndSttFindTracks::Init(), PndEmcMultiWaveformToCalibratedDigi::Init(), PndRecoKalmanTask2::Init(), PndDrcTimeDigiTask::Init(), PndEmcExpClusterSplitter::Init(), PndFtsHoughTrackerTask::Init(), PndSdsNoiseProducer::Init(), PndEmcPhiBumpSplitter::Init(), PndSdsIdealRecoTask::Init(), PndSdsHybridHitProducer::Init(), PndRecoMultiKalmanTask::Init(), PndSdsIdealClusterTask::Init(), PndRecoKalmanTask::Init(), PndSdsStripHitProducerDif::Init(), PndGemDigitize::Init(), PndSdsStripHitProducer::Init(), PndGemFindHits::Init(), PndSdsPixelClusterTask::Init(), PndSdsStripClusterTask::Init(), PndMvdGemTrackFinderOnHits::Init(), PndBarrelTrackFinder::Init(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcMakeBump::PndEmcMakeBump(), PndUnassignedHitsTask::RegisterBranches(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndEmcMakeBump::SetStorageOfData(), and PndEmcFullDigiTask::StoreDigi().

32 { return fPersistency; }
InitStatus PndLmdNoiseProducer::Init ( )
virtual

Reimplemented from PndMvdNoiseProducer.

Definition at line 35 of file PndLmdNoiseProducer.cxx.

References PndMvdNoiseProducer::fDigiParPix, PndMvdNoiseProducer::fDigiPixelBuffer, FillSensorLists(), PndMvdNoiseProducer::fMCEventheader, PndMvdNoiseProducer::fPixChargeConv, PndMvdNoiseProducer::fPixelIds2, PndMvdNoiseProducer::fPreviousTime, PndMvdNoiseProducer::fStripRectLIds, PndMvdNoiseProducer::fStripRectSIds, PndMvdNoiseProducer::fStripTrapIds, PndMvdNoiseProducer::fTimeOrderedDigi, PndMvdNoiseProducer::fTotDigiParPix, fVerbose, PndSdsPixelDigiPar::GetChargeConvMethod(), PndSdsTotDigiPar::GetChargingTime(), PndSdsTotDigiPar::GetClockFrequency(), PndSdsTotDigiPar::GetConstCurrent(), PndSdsPixelDigiPar::GetNoise(), and PndSdsPixelDigiPar::GetThreshold().

36 {
37 
38 // Get RootManager
39  FairRootManager* ioman = FairRootManager::Instance();
40 
41  if ( ! ioman )
42  {
43  std::cout << " -E- PndMvdNoiseProducer::Init: RootManager not instantiated!" << std::endl;
44  return kFATAL;
45  }
46  // call prior to base call the overloaded FillSensorMethod() to find sensors from geometry;
48  // call the base implementation
49  // if ( PndMvdNoiseProducer::Init() == kFATAL ) return kFATAL;
50  // override some lmd specific stuff
51 
52  // Get input array
53 
54  // fDigiStripBuffer = (PndSdsDigiStripWriteoutBuffer*)FairRootManager::Instance()->
55  // RegisterWriteoutBuffer("LMDStripDigis", new PndSdsDigiStripWriteoutBuffer("LMDStripDigis", "LMD", kTRUE));
56 
57  fDigiPixelBuffer = new PndSdsDigiPixelWriteoutBuffer("LMDPixelDigis", "LMD", kTRUE);
58  fDigiPixelBuffer = (PndSdsDigiPixelWriteoutBuffer*)FairRootManager::Instance()->
59  RegisterWriteoutBuffer("LMDPixelDigis", fDigiPixelBuffer);
60  fDigiPixelBuffer->ActivateBuffering(fTimeOrderedDigi);
61 
62 
63 fMCEventheader = (FairMCEventHeader*) ioman->GetObject("MCEventHeader.");
64  if ( ! fMCEventheader ){
65  Warning("Init","Did not find the MC event header, assume 50ns of noise clockticks per call of Exec().");
66  }
67  fPreviousTime=0.;
68 
69  //FillSensorLists();
70 
71 // fFEModel = new PndSdsFESimple();
72 
73  if(fVerbose>0)
74  {
75  std::cout <<" -I- PndLmdNoiseProducer: Registered Sensors: "
76  <<fStripRectLIds.size()+fStripRectSIds.size()<<"xStripRect "
77  <<fStripTrapIds.size()<<"xStripTrap "
78  <<fPixelIds2.size()<<"xPixel"
79  <<std::endl;
80  }
81  std::cout << " -I- PndMvdNoiseProducer: Intialisation successfull" << std::endl;
82 
83  // if (fDigiParRect->GetChargeConvMethod() == 0){
84  // if(fVerbose>0) Info("Init()","ideal charge conversion for rect. strips");
85  // fStripRectChargeConv = new PndSdsIdealChargeConversion(fDigiParRect->GetNoise());
86  // }
87  // else if (fDigiParRect->GetChargeConvMethod() == 1){
88  // if(fVerbose>0) Info("Init()","use TOT charge conversion for rect. strips");
89  // fStripRectChargeConv = new PndSdsTotChargeConversion(
90  // fTotDigiParRect->GetChargingTime(),
91  // fTotDigiParRect->GetConstCurrent(),
92  // fDigiParRect->GetThreshold(),
93  // fTotDigiParRect->GetClockFrequency(),
94  // fVerbose);
95  // }
96  // else Fatal ("Init()","rect. strips: charge conversion method not defined!");
97 
98  // if (fDigiParTrap->GetChargeConvMethod() == 0){
99  // if(fVerbose>0) Info("Init()","ideal charge conversion for trap. strips");
100  // fStripTrapChargeConv = new PndSdsIdealChargeConversion(fDigiParTrap->GetNoise());
101  // }
102  // else if (fDigiParTrap->GetChargeConvMethod() == 1){
103  // if(fVerbose>0) Info("Init()","use TOT charge conversion for trap. strips");
104  // fStripTrapChargeConv = new PndSdsTotChargeConversion(
105  // fTotDigiParTrap->GetChargingTime(),
106  // fTotDigiParTrap->GetConstCurrent(),
107  // fDigiParTrap->GetThreshold(),
108  // fTotDigiParTrap->GetClockFrequency(),
109  // fVerbose);
110  // }
111  // else Fatal ("Init()","trap. strips: charge conversion method not defined!");
112 
113  if (fDigiParPix->GetChargeConvMethod() == 0){
114  if(fVerbose>0) Info("Init()","ideal charge conversion for pixel part");
116  }
117  else if (fDigiParPix->GetChargeConvMethod() == 1){
118  if(fVerbose>0) Info("Init()","use TOT charge conversion for pixel part");
124  fVerbose);
125  }
126  else Fatal ("Init()","pixel part: charge conversion method not defined!");
127 
128  return kSUCCESS;
129 }
int fVerbose
Definition: poormantracks.C:24
PndSdsTotDigiPar * fTotDigiParPix
Int_t GetChargeConvMethod() const
std::vector< Int_t > fPixelIds2
std::vector< Int_t > fStripRectSIds
PndSdsDigiPixelWriteoutBuffer * fDigiPixelBuffer
Double_t GetConstCurrent() const
Double_t GetNoise() const
Bool_t fTimeOrderedDigi
parameter to switch to time ordered simulation
Double_t GetClockFrequency() const
std::vector< Int_t > fStripRectLIds
PndSdsChargeConversion * fPixChargeConv
PndSdsPixelDigiPar * fDigiParPix
Double_t GetChargingTime() const
std::vector< Int_t > fStripTrapIds
FairMCEventHeader * fMCEventheader
Geometry name handling.
Double_t GetThreshold() const
void PndMvdNoiseProducer::RunTimeBased ( )
inlineinherited

Definition at line 69 of file PndMvdNoiseProducer.h.

References PndMvdNoiseProducer::fTimeOrderedDigi.

69 {fTimeOrderedDigi = kTRUE;}
Bool_t fTimeOrderedDigi
parameter to switch to time ordered simulation
void PndLmdNoiseProducer::SetParContainers ( )
virtual

Virtual method Init

Reimplemented from PndMvdNoiseProducer.

Definition at line 154 of file PndLmdNoiseProducer.cxx.

References PndMvdNoiseProducer::fDigiParPix, PndMvdNoiseProducer::fGeoH, PndMvdNoiseProducer::fTotDigiParPix, PndGeoHandling::Instance(), rtdb, and PndGeoHandling::SetParContainers().

155 {
156 
157  // Get Base Container
158  FairRun* ana = FairRun::Instance();
159  FairRuntimeDb* rtdb=ana->GetRuntimeDb();
160  // fDigiParRect = (PndSdsStripDigiPar*)(rtdb->getContainer("SDSStripDigiParRect"));
161  // fDigiParTrap = (PndSdsStripDigiPar*)(rtdb->getContainer("SDSStripDigiParTrap"));
162  fDigiParPix = (PndSdsPixelDigiPar*)(rtdb->getContainer("LMDPixelDigiPar"));
163  // fTotDigiParRect = (PndSdsTotDigiPar*)(rtdb->getContainer("SDSStripTotDigiParRect"));
164  // fTotDigiParTrap = (PndSdsTotDigiPar*)(rtdb->getContainer("SDSStripTotDigiParTrap"));
165  fTotDigiParPix = (PndSdsTotDigiPar*)(rtdb->getContainer("LMDPixelTotDigiPar"));
166 
167  if ( fGeoH == NULL ) {
169  }
170 
172 }
PndSdsTotDigiPar * fTotDigiParPix
virtual void SetParContainers()
Charge Digitization Parameter Class for SDS.
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
static PndGeoHandling * Instance()
PndSdsPixelDigiPar * fDigiParPix
PndGeoHandling * fGeoH
Digitization Parameter Class for SDS-Pixel part.
void PndPersistencyTask::SetPersistency ( Bool_t  val = kTRUE)
inlineinherited

Definition at line 31 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency, and val.

Referenced by barrelTrackFinder(), digi_complete(), digi_complete_newSTT(), digiOnly_complete(), PndBarrelTrackFinder::PndBarrelTrackFinder(), PndCATracking::PndCATracking(), PndDrcHitFinder::PndDrcHitFinder(), PndEmc2DLocMaxFinder::PndEmc2DLocMaxFinder(), PndEmcExpClusterSplitter::PndEmcExpClusterSplitter(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcFWEndcapDigi::PndEmcFWEndcapDigi(), PndEmcFWEndcapTimebasedWaveforms::PndEmcFWEndcapTimebasedWaveforms(), PndEmcHitProducer::PndEmcHitProducer(), PndEmcHitsToWaveform::PndEmcHitsToWaveform(), PndEmcMakeBump::PndEmcMakeBump(), PndEmcMakeCluster::PndEmcMakeCluster(), PndEmcMakeClusterOnline::PndEmcMakeClusterOnline(), PndEmcMakeDigi::PndEmcMakeDigi(), PndEmcMakeRecoHit::PndEmcMakeRecoHit(), PndEmcMultiWaveformToCalibratedDigi::PndEmcMultiWaveformToCalibratedDigi(), PndEmcPhiBumpSplitter::PndEmcPhiBumpSplitter(), PndEmcTmpWaveformToDigi::PndEmcTmpWaveformToDigi(), PndEmcWaveformToCalibratedDigi::PndEmcWaveformToCalibratedDigi(), PndEmcWaveformToDigi::PndEmcWaveformToDigi(), PndFtofHitProducerIdeal::PndFtofHitProducerIdeal(), PndFtsCATracking::PndFtsCATracking(), PndFtsHitProducerIdeal::PndFtsHitProducerIdeal(), PndFtsHitProducerRealFast::PndFtsHitProducerRealFast(), PndFtsHitProducerRealFull::PndFtsHitProducerRealFull(), PndFtsHoughTrackerTask::PndFtsHoughTrackerTask(), PndGemDigitize::PndGemDigitize(), PndGemFindHits::PndGemFindHits(), PndIdealTrackFinder::PndIdealTrackFinder(), PndLmdPixelClusterTask::PndLmdPixelClusterTask(), PndLmdPixelHitProducerFast::PndLmdPixelHitProducerFast(), PndMdtClusterTask::PndMdtClusterTask(), PndMdtDigitization::PndMdtDigitization(), PndMdtHitProducerIdeal::PndMdtHitProducerIdeal(), PndMdtPointsToWaveform::PndMdtPointsToWaveform(), PndMdtTrkProducer::PndMdtTrkProducer(), PndMissingPzCleanerTask::PndMissingPzCleanerTask(), PndMvdGemTrackFinderOnHits::PndMvdGemTrackFinderOnHits(), PndMvdHitProducerIdeal::PndMvdHitProducerIdeal(), PndMvdPixelClusterTask::PndMvdPixelClusterTask(), PndMvdTimeWalkCorrTask::PndMvdTimeWalkCorrTask(), PndMvdToPix4ClusterTask::PndMvdToPix4ClusterTask(), PndRecoKalmanTask::PndRecoKalmanTask(), PndRecoKalmanTask2::PndRecoKalmanTask2(), PndRecoMultiKalmanTask::PndRecoMultiKalmanTask(), PndRecoMultiKalmanTask2::PndRecoMultiKalmanTask2(), PndRichHitFinder::PndRichHitFinder(), PndRichHitProducer::PndRichHitProducer(), PndSciTDigiTask::PndSciTDigiTask(), PndSciTHitProducerIdeal::PndSciTHitProducerIdeal(), PndSdsHitProducerIdeal::PndSdsHitProducerIdeal(), PndSdsHybridHitProducer::PndSdsHybridHitProducer(), PndSdsIdealClusterTask::PndSdsIdealClusterTask(), PndSdsIdealRecoTask::PndSdsIdealRecoTask(), PndSdsNoiseProducer::PndSdsNoiseProducer(), PndSdsPixelClusterTask::PndSdsPixelClusterTask(), PndSdsStripClusterTask::PndSdsStripClusterTask(), PndSdsStripHitProducer::PndSdsStripHitProducer(), PndSdsTimeWalkCorrTask::PndSdsTimeWalkCorrTask(), PndSttFindTracks::PndSttFindTracks(), PndSttHelixHitProducer::PndSttHelixHitProducer(), PndSttHitProducerIdeal::PndSttHitProducerIdeal(), PndSttHitProducerRealFast::PndSttHitProducerRealFast(), PndSttHitProducerRealFull::PndSttHitProducerRealFull(), PndSttMatchTracks::PndSttMatchTracks(), PndSttMvdGemTracking::PndSttMvdGemTracking(), PndTrackSmearTask::PndTrackSmearTask(), PndTrkTracking2::PndTrkTracking2(), reco(), reco_complete(), reco_complete_gf2(), reco_complete_newSTT(), reco_complete_sec(), recoideal_complete(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndLmdPixelHitProducerFast::SetPersistance(), PndSdsHitProducerIdeal::SetPersistance(), PndSttMvdGemTracking::SetPersistenc(), PndMdtClusterTask::SetPersistence(), PndSttHelixHitProducer::SetPersistence(), PndMissingPzCleanerTask::SetPersistence(), PndFtsHitProducerRealFast::SetPersistence(), PndFtsHitProducerRealFull::SetPersistence(), PndSttHitProducerRealFull::SetPersistence(), PndSttHitProducerIdeal::SetPersistence(), PndSttHitProducerRealFast::SetPersistence(), PndFtsHitProducerIdeal::SetPersistence(), PndTrackSmearTask::SetPersistence(), PndSciTHitProducerIdeal::SetPersistence(), PndIdealTrackFinder::SetPersistence(), PndSttMatchTracks::SetPersistence(), PndSttFindTracks::SetPersistence(), PndFtsHoughTrackerTask::SetPersistence(), PndTrkTracking2::SetPersistence(), PndEmcMakeRecoHit::SetStorageOfData(), PndEmcFWEndcapDigi::SetStorageOfData(), PndEmcMakeClusterOnline::SetStorageOfData(), PndEmcFWEndcapTimebasedWaveforms::SetStorageOfData(), PndEmcMakeDigi::SetStorageOfData(), PndMdtPointsToWaveform::SetStorageOfData(), PndEmc2DLocMaxFinder::SetStorageOfData(), PndEmcMakeCluster::SetStorageOfData(), PndEmcHitsToWaveform::SetStorageOfData(), PndEmcMakeBump::SetStorageOfData(), PndEmcTmpWaveformToDigi::SetStorageOfData(), PndEmcWaveformToDigi::SetStorageOfData(), PndEmcWaveformToCalibratedDigi::SetStorageOfData(), PndEmcMultiWaveformToCalibratedDigi::SetStorageOfData(), PndEmcExpClusterSplitter::SetStorageOfData(), PndEmcPhiBumpSplitter::SetStorageOfData(), standard_tracking(), and PndEmcFullDigiTask::StoreDigi().

31 { fPersistency = val; }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11

Member Data Documentation

TString PndMvdNoiseProducer::fBranchName
protectedinherited

Definition at line 75 of file PndMvdNoiseProducer.h.

PndSdsChargeConversion* PndMvdNoiseProducer::fCurrentChargeConv
protectedinherited
PndSdsPixelDigiPar* PndMvdNoiseProducer::fDigiParPix
protectedinherited
PndSdsStripDigiPar* PndMvdNoiseProducer::fDigiParRect
protectedinherited
PndSdsStripDigiPar* PndMvdNoiseProducer::fDigiParTrap
protectedinherited
TClonesArray* PndMvdNoiseProducer::fDigiPixelArray
protectedinherited

Definition at line 78 of file PndMvdNoiseProducer.h.

PndSdsDigiPixelWriteoutBuffer* PndMvdNoiseProducer::fDigiPixelBuffer
protectedinherited
TClonesArray* PndMvdNoiseProducer::fDigiStripArray
protectedinherited

In-Output array of PndSdsDigis

Definition at line 77 of file PndMvdNoiseProducer.h.

PndSdsDigiStripWriteoutBuffer* PndMvdNoiseProducer::fDigiStripBuffer
protectedinherited
PndGeoHandling* PndMvdNoiseProducer::fGeoH
protectedinherited
FairMCEventHeader* PndMvdNoiseProducer::fMCEventheader
protectedinherited

Geometry name handling.

Definition at line 93 of file PndMvdNoiseProducer.h.

Referenced by CalcReadoutCycles(), PndMvdNoiseProducer::CalcReadoutCycles(), Init(), and PndMvdNoiseProducer::Init().

Int_t PndMvdNoiseProducer::fNoiseSpread
protectedinherited

Definition at line 108 of file PndMvdNoiseProducer.h.

PndSdsChargeConversion* PndMvdNoiseProducer::fPixChargeConv
protectedinherited
std::vector<Int_t> PndLmdNoiseProducer::fPixelIds
private

Definition at line 40 of file PndLmdNoiseProducer.h.

Referenced by Exec(), and FillSensorLists().

std::vector<Int_t> PndMvdNoiseProducer::fPixelIds2
protectedinherited
std::vector<Int_t> PndMvdNoiseProducer::fPixelIds4
protectedinherited
std::vector<Int_t> PndMvdNoiseProducer::fPixelIds5
protectedinherited
std::vector<Int_t> PndMvdNoiseProducer::fPixelIds6
protectedinherited
Double_t PndMvdNoiseProducer::fPreviousTime
protectedinherited
PndSdsChargeConversion* PndMvdNoiseProducer::fStripRectChargeConv
protectedinherited
std::vector<Int_t> PndMvdNoiseProducer::fStripRectLIds
protectedinherited
std::vector<Int_t> PndMvdNoiseProducer::fStripRectSIds
protectedinherited
PndSdsChargeConversion* PndMvdNoiseProducer::fStripTrapChargeConv
protectedinherited
std::vector<Int_t> PndMvdNoiseProducer::fStripTrapIds
protectedinherited
Int_t PndMvdNoiseProducer::fThreshold
protectedinherited

Definition at line 109 of file PndMvdNoiseProducer.h.

Bool_t PndMvdNoiseProducer::fTimeOrderedDigi
protectedinherited

parameter to switch to time ordered simulation

Definition at line 73 of file PndMvdNoiseProducer.h.

Referenced by Init(), PndMvdNoiseProducer::Init(), and PndMvdNoiseProducer::RunTimeBased().

PndSdsTotDigiPar* PndMvdNoiseProducer::fTotDigiParPix
protectedinherited
PndSdsTotDigiPar* PndMvdNoiseProducer::fTotDigiParRect
protectedinherited
PndSdsTotDigiPar* PndMvdNoiseProducer::fTotDigiParTrap
protectedinherited

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