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

Takes list of PndEmcWaveform and creates PndEmcDigi. More...

#include <PndEmcWaveformToDigi.h>

Inheritance diagram for PndEmcWaveformToDigi:
PndPersistencyTask

Public Member Functions

 PndEmcWaveformToDigi (Int_t verbose=0, Bool_t storedigis=kTRUE)
 
virtual ~PndEmcWaveformToDigi ()
 
virtual InitStatus Init ()
 Init Task. More...
 
virtual void Exec (Option_t *opt)
 Runs the task. More...
 
void SetStorageOfData (Bool_t val)
 
void RunTimeBased ()
 
void UseDigitizationVersion2 ()
 
void SetFakeOnline (bool d=true)
 
virtual void SetPSAAlgorithm (PndEmcAbsPSA *psa)
 Set PSA Algorithm to be used for Barrel and Backward Endcap. More...
 
virtual void SetPSAAlgorithmFWD (PndEmcAbsPSA *psa)
 Set PSA Algorithm to be used for Forward Endcap. More...
 
virtual void SetPSAAlgorithmPMT (PndEmcAbsPSA *psa)
 Set PSA Algorithm to be used for Forward Shashlik. More...
 
virtual void SetCrystalCalibrator (PndEmcAbsCrystalCalibrator *Cal)
 Set The Crystal Calibrator to use. More...
 
virtual void FinishTask ()
 Called at end of task. More...
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

Protected Member Functions

virtual void SetParContainers ()
 

Private Member Functions

 PndEmcWaveformToDigi (const PndEmcWaveformToDigi &)
 
PndEmcWaveformToDigioperator= (const PndEmcWaveformToDigi &)
 
Float_t SmearFakeOnline (Float_t energy)
 
 ClassDef (PndEmcWaveformToDigi, 1)
 

Private Attributes

TClonesArray * fWaveformArray
 
TClonesArray * fEvtHeaderArray
 
TClonesArray * fDigiArray
 
Double_t fSampleRate
 
Double_t fSampleRate_PMT
 
Double_t fSampleRate_FWD
 
Double_t fEnergyDigiThreshold
 
Double_t fASIC_Shaping_int_time
 
Double_t fPMT_Shaping_int_time
 
Double_t fPMT_Shaping_diff_time
 
Double_t fCrystal_time_constant
 
Double_t fShashlyk_time_constant
 
Int_t fNumber_of_samples_in_waveform
 
Int_t fNumber_of_samples_in_waveform_pmt
 
Int_t fNumber_of_samples_in_waveform_fwd
 
Double_t fFWD_Shaping_int_time
 
Double_t fFWD_time_constant
 
TString fDigiPosMethod
 
Double_t fEmcDigiRescaleFactor
 
Double_t fEmcDigiPositionDepthPWO
 
Double_t fEmcDigiPositionDepthShashlyk
 
PndEmcAbsPulseshapefPulseshape
 
PndEmcAbsPulseshapefPulseshape_pmt
 
PndEmcAbsPulseshapefPulseshape_fwd
 
PndEmcAbsPSAfpsaAlgorithm
 
PndEmcAbsPSAfpsaAlgorithm_pmt
 
PndEmcAbsPSAfpsaAlgorithm_fwd
 
PndEmcAbsCrystalCalibratorfCalibrator
 
PndEmcDigiParfDigiPar
 
PndEmcRecoParfRecoPar
 
PndEmcFpgaParfFpgaPar
 
Int_t fVerbose
 
Bool_t fTimeOrderedDigi
 set to kTRUE to use the time ordering of the output data. More...
 
Double_t fWfNormalisation
 
Double_t fWfNormalisation_fwd
 
Double_t fWfNormalisation_pmt
 
BinaryFunctor * fFunctor
 
TVectorD CoeffMod3
 
TVectorD CoeffMod5
 
TVectorD CoeffModo
 
Int_t fEventNo
 
Double_t fTimeWindow
 
Double_t fTimeShift
 
Int_t totDigisAboveThreshold
 
Int_t totHits
 
Int_t totExpHits
 
Int_t totNumOfWave
 
Bool_t fDigitizationVersion2
 
bool fFakeOnline
 

Detailed Description

Takes list of PndEmcWaveform and creates PndEmcDigi.

Definition at line 50 of file PndEmcWaveformToDigi.h.

Constructor & Destructor Documentation

PndEmcWaveformToDigi::PndEmcWaveformToDigi ( Int_t  verbose = 0,
Bool_t  storedigis = kTRUE 
)

Definition at line 50 of file PndEmcWaveformToDigi.cxx.

References fDigiPosMethod, fEmcDigiRescaleFactor, and PndPersistencyTask::SetPersistency().

51  : fWaveformArray(0)
52  , fDigiArray(0)
53  , fSampleRate(0)
54  , fSampleRate_PMT(0)
63  , fDigiPosMethod(0)
67  , fPulseshape(0)
68  , fPulseshape_pmt(0)
69  , fpsaAlgorithm(0)
72  , fCalibrator()
73  , fDigiPar(new PndEmcDigiPar())
74  , fRecoPar(new PndEmcRecoPar())
75  , fFpgaPar(new PndEmcFpgaPar())
76  , fVerbose(verbose)
77  , fTimeOrderedDigi(kFALSE)
78  , fWfNormalisation(0)
81  , fDigitizationVersion2(kFALSE)
82  , fFakeOnline(false)
83 {
84  fDigiPosMethod="depth";// "surface" or "depth"
86  SetPersistency(storedigis);
87  //fPndEmcDigiPositionDepth=6.2;
88 }
PndEmcAbsPulseshape * fPulseshape
#define verbose
void SetPersistency(Bool_t val=kTRUE)
parameter set of Emc digitisation
Definition: PndEmcDigiPar.h:12
PndEmcAbsPSA * fpsaAlgorithm_pmt
PndEmcAbsCrystalCalibrator * fCalibrator
Bool_t fTimeOrderedDigi
set to kTRUE to use the time ordering of the output data.
PndEmcAbsPSA * fpsaAlgorithm_fwd
PndEmcAbsPulseshape * fPulseshape_pmt
Parameter set for Emc Reco.
Definition: PndEmcRecoPar.h:12
PndEmcWaveformToDigi::~PndEmcWaveformToDigi ( )
virtual

Definition at line 93 of file PndEmcWaveformToDigi.cxx.

References fPulseshape, fPulseshape_fwd, and fPulseshape_pmt.

94 {
95  delete fPulseshape;
96  delete fPulseshape_pmt;
97  delete fPulseshape_fwd;
98 
99 }
PndEmcAbsPulseshape * fPulseshape
PndEmcAbsPulseshape * fPulseshape_fwd
PndEmcAbsPulseshape * fPulseshape_pmt
PndEmcWaveformToDigi::PndEmcWaveformToDigi ( const PndEmcWaveformToDigi )
private

Member Function Documentation

PndEmcWaveformToDigi::ClassDef ( PndEmcWaveformToDigi  ,
 
)
private
void PndEmcWaveformToDigi::Exec ( Option_t *  opt)
virtual

Runs the task.

The task loops over the waveforms and uses the pulse shape analyser (PndEmcAbsPSA) to extract signal height and timing. From this the PndEmcDigi are created.

Parameters
optunused
Returns
void

Definition at line 334 of file PndEmcWaveformToDigi.cxx.

References At, PndEmcAbsCrystalCalibrator::Calibrate(), ctime, Double_t, fCalibrator, fDigiArray, PndEmcDigi::fDigiArrayTBD, fEnergyDigiThreshold, fEventNo, PndEmcDigi::fEvtNo, fFakeOnline, fFunctor, fpsaAlgorithm, fpsaAlgorithm_fwd, fpsaAlgorithm_pmt, fSampleRate, fSampleRate_FWD, fSampleRate_PMT, fTimeOrderedDigi, fTimeShift, fVerbose, fWaveformArray, PndEmcWaveform::GetDetectorId(), PndEmcDigi::GetEnergy(), PndEmcWaveform::GetEvtList(), PndEmcAbsPSA::GetHit(), PndEmcWaveform::GetHitIndex(), PndEmcWaveform::GetModule(), PndEmcWaveform::GetTrackId(), i, PndEmcAbsCrystalCalibrator::kCALOK, nHits, PndEmcAbsPSA::Process(), rtime, PndEmcDigi::SetEnergy(), SmearFakeOnline(), timer, totDigisAboveThreshold, totExpHits, totHits, and totNumOfWave.

335 {
336  TStopwatch timer;
337  if (fVerbose>2){
338  timer.Start();
339  }
340 
341  fDigiArray->Delete();
342 
343  Double_t fevtTime = FairRootManager::Instance()->GetEventTime();
344 
345  if(fVerbose>0){
346  cout<<endl;
347  cout<<"=======================PndEmcWaveformToDigi======================="<<endl;
348  std::cout<<"Event NO. #"<<fEventNo<<", event time # "<<fevtTime <<std::endl;
349  }
350  if(fTimeOrderedDigi){
351  if(FairRunAna::Instance()->IsTimeStamp()){
352  fWaveformArray->Delete();
353  Double_t time_length = 40.;//99.98%
354  if(fVerbose >0)
355  cout<<"--I-- time-based simulation, read data to later #"<<time_length<<" ns"<<endl;
356  fWaveformArray = FairRootManager::Instance()->GetData("EmcSortedWaveform"
357  , fFunctor
358  , fevtTime + time_length);
359  }
360  if(fVerbose>0)
361  std::cout<<"fDigiArrayTBD size #"<<PndEmcDigi::fDigiArrayTBD->GetEntriesFast()<<std::endl;
362  }
363  Int_t nWaveforms = fWaveformArray->GetEntriesFast();
364  if(fVerbose>0){
365  std::cout<<"fWaveformArray size #"<<nWaveforms<<std::endl;
366  }
367  //std::cout<<"fEvtHeaderArray size #"<<fEvtHeaderArray->GetEntriesFast()<<std::endl;
368  //Int_t evtNo = FairRunAna::Instance()->GetEventHeader()->GetMCEntryNumber();
369  //for(Int_t iheader=0;iheader<fEvtHeaderArray->GetEntriesFast();++iheader){
370  // FairEventHeader* evtHeader= (FairEventHeader*) fEvtHeaderArray->At(iheader);
371  // cout<<"===> Event NO. #"<<evtHeader->GetMCEntryNumber()<<", event time#"<<evtHeader->GetEventTime()<<endl;
372  //}
373 
374 
375  Double_t fdigiEnergy(0.), fdigiTime(0.), theSampleRate, minT(1e10), maxT(-1e10);
376  Int_t hitIndex, nHits, detId, trackId, i_digi(0), fMod;
377  PndEmcAbsPSA *thePSA(0);
378 
379  totNumOfWave += nWaveforms;
380  for (Int_t iWaveform=0; iWaveform<nWaveforms; iWaveform++)
381  {
382  PndEmcWaveform* theWaveform = (PndEmcWaveform*) fWaveformArray->At(iWaveform);
383  hitIndex=theWaveform->GetHitIndex();
384  detId=theWaveform->GetDetectorId();
385  trackId=theWaveform->GetTrackId();
386  fMod=theWaveform->GetModule();
387 
388  if(theWaveform->GetTimeStamp() < minT ) minT = theWaveform->GetTimeStamp();
389  if(theWaveform->GetTimeStamp() > maxT ) maxT = theWaveform->GetTimeStamp();
390  //Double_t timeshift; // how maximum is shifted
391  if(fMod== 5){
392  thePSA = fpsaAlgorithm_pmt;
393  theSampleRate = fSampleRate_PMT;
394  } else if(fMod == 3){
395  thePSA = fpsaAlgorithm_fwd;
396  theSampleRate = fSampleRate_FWD;
397  }else
398  {
399  thePSA = fpsaAlgorithm;
400  theSampleRate = fSampleRate;
401  }
402  //cout<<endl;
403  const std::vector<Int_t>& evtList = theWaveform->GetEvtList();
404  if(fVerbose > 1){
405  cout<<endl;
406  std::cout<<"The wave#"<<iWaveform<<" includes "<<evtList.size()<<" events #";
407  for(size_t i=0; i< evtList.size(); ++i){
408  std::cout<<evtList[i]<<" ";
409  }
410  cout<<endl;
411  }
412 
413  nHits = thePSA->Process(theWaveform);
414 
415  if(fVerbose > 1){
416  std::cout<<"detID#"<<theWaveform->GetDetectorId()<<", hits#"<<nHits<<std::endl;
417  }
418  totHits += nHits;
419  totExpHits += evtList.size();
420 
421  for(Int_t i = 0 ; i< nHits; i++)
422  {
423  thePSA->GetHit(i, fdigiEnergy, fTimeShift);
425  continue;
426  }
427  fdigiTime = theWaveform->GetTimeStamp();// + fTimeShift/theSampleRate*1.e9;//translate position to global time //TS: I do not unerstand this line waveform time is in ns and the tof of the particle but TimeShift is divided by samplingtime??
428 
429  if(fVerbose>1){
430  //if(fdigiTime-fevtTime>200. || fdigiTime - fevtTime < 0.)
431  {
432  cout<<"wave #"<<iWaveform<<", WaveformTime#" << theWaveform->GetTimeStamp() << ", mod#"<<fMod<<", theSampleRate#"<<theSampleRate<<", shift#"<<fTimeShift<<endl;
433  cout<<"fdigiEnergy#"<<fdigiEnergy<<", fdigiTime#"<<fdigiTime<<", evtTime#"<<fevtTime<<", diffT#"<<(fdigiTime-fevtTime)<<endl;
434  }
435  }
436  // [R.K.] Assume there is either time based or non-time based, so smearung runs only once
437  if(fFakeOnline) fdigiEnergy = SmearFakeOnline(fdigiEnergy);
438 
439  if (fdigiEnergy>fEnergyDigiThreshold)
440  {
442 
443  PndEmcDigi* myDigi(0);
444  //std::cout<<"PndEmcWaveformToDigi::trackId #"<<trackId<<endl;
445  myDigi = new((*fDigiArray)[i_digi++]) PndEmcDigi(trackId,detId, fdigiEnergy, fdigiTime, hitIndex);
446  myDigi->fEvtNo = evtList[i];//fEventNo;
447 
448  myDigi->AddLink(FairLink("EmcWaveform", iWaveform));
449  }
450  }
451  }
452  Int_t nOldSize = fDigiArray->GetEntriesFast();
453  Int_t nDigi = PndEmcDigi::fDigiArrayTBD->GetEntriesFast();
454  if(fTimeOrderedDigi){
455  for(Int_t iDigi = 0; iDigi < nDigi; ++iDigi)
456  { // [R.K.] Assume there is either time based or non-time based, so smearung runs only once
458  if(fFakeOnline) copy->SetEnergy(SmearFakeOnline(copy->GetEnergy()));
459  new((*fDigiArray)[i_digi++]) PndEmcDigi(*copy);
460  }
461  //free buffer
462  PndEmcDigi::fDigiArrayTBD->Delete();
463  }
464  if(fVerbose >0){
465  Int_t nNewSize = fDigiArray->GetEntriesFast();
466  std::cout<<nNewSize<<" digis, "<<nOldSize<<" <--waveform, "<<nDigi<<" <--previous event."<<std::endl;
467  cout<<"=======================PndEmcWaveformToDigi======================="<<endl;
468  }
469 
470  //if(fVerbose >1){
471  // cout<<"=======================PndEmcWaveformToDigi======================="<<endl;
472  // cout<<"time region #"<<minT<<", "<<maxT<<endl;
473  // cout<<"=================================================================="<<endl;
474  //}
475 
476  if (fVerbose>2){
477  timer.Stop();
478  Double_t rtime = timer.RealTime();
479  Double_t ctime = timer.CpuTime();
480  cout << "PndEmcWaveformToDigi, Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
481  }
482  fEventNo ++;
483 }
static TClonesArray * fDigiArrayTBD
Definition: PndEmcDigi.h:52
virtual Double_t GetEnergy() const
Definition: PndEmcDigi.cxx:296
represents the reconstructed hit of one emc crystal
Definition: PndEmcDigi.h:40
Int_t i
Definition: run_full.C:25
Int_t GetHitIndex() const
virtual CalibrationStatus_t Calibrate(Double_t &Energy, Long_t detId, Int_t SignalNr=1)=0
Apply CrystalCalibration to Energy of Crystal derId.
void SetEnergy(Double32_t energy)
Definition: PndEmcDigi.h:84
int nHits
Definition: RiemannTest.C:16
Double_t
int GetTrackId() const
const std::vector< Int_t > & GetEvtList() const
TStopwatch timer
Definition: hit_dirc.C:51
long GetDetectorId() const
represents a simulated waveform in an emc crystal
Double_t ctime
Definition: hit_dirc.C:114
Baseclass for pulseshapeanalysis ( featureextraction )
Definition: PndEmcAbsPSA.h:21
Int_t fEvtNo
Definition: PndEmcDigi.h:118
PndEmcAbsPSA * fpsaAlgorithm_pmt
Float_t SmearFakeOnline(Float_t energy)
Short_t GetModule() const
Double_t rtime
Definition: hit_dirc.C:113
PndEmcAbsCrystalCalibrator * fCalibrator
Bool_t fTimeOrderedDigi
set to kTRUE to use the time ordering of the output data.
cout<<"the Event No is "<< i<< endl;{{if(hit_array->GetEntriesFast()!=mc_array->GetEntriesFast()) continue;PndSdsHit *hit=(PndSdsHit *) hit_array-> At(j)
Definition: anaLmdCluster.C:71
PndEmcAbsPSA * fpsaAlgorithm_fwd
void PndEmcWaveformToDigi::FinishTask ( )
virtual

Called at end of task.

Outputs some statistics.

Returns
void

Definition at line 517 of file PndEmcWaveformToDigi.cxx.

References fEnergyDigiThreshold, totDigisAboveThreshold, totExpHits, totHits, and totNumOfWave.

518 {
519 
520  //unmatchCount += fBufferofDigisToBeDetermined.size();
521  std::cout<<"========================================================="<<std::endl;
522  std::cout<<"PndEmcWaveformToDigi::FinishTask"<<std::endl;
523  std::cout<<"========================================================="<<std::endl;
524  std::cout<<"Total waveforms# "<<totNumOfWave<<std::endl;
525  std::cout<<"Total expected hits# "<<totExpHits<<std::endl;
526  std::cout<<"Total fpga hits# "<<totHits<<std::endl;
527  std::cout<<"Total digis Above th. #"<<totDigisAboveThreshold<<", threshold# "<<fEnergyDigiThreshold<<std::endl;
528  std::cout<<"========================================================="<<std::endl;
529  //fpsaAlgorithm->Print();
530  //fpsaAlgorithm_pmt->Print();
531  //std::cout<<"pileup events #"<<PileupEventSet.size()<<std::endl;
532  //std::cout<<"Correct Ana#"<<CorrectAna<<std::endl;
533  //std::cout<<"UnCorrect Ana#"<<unCorrectAna<<std::endl;
534  //std::set<Int_t>::iterator it = PileupEventSet.begin();
535  //std::set<Int_t>::iterator end = PileupEventSet.end();
536  //Int_t LineNo= 0;
537  //for(; it != end; ++it){
538  // std::cout<<(*it)<<' ';
539  // if(++LineNo % 10 == 0)
540  // std::cout<<std::endl;
541  //}
542  //std::cout<<std::endl;
543 
544 }
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(), PndEmcHitProducer::Init(), PndRecoMultiKalmanTask2::Init(), PndDrcHitProducerReal::Init(), PndDskFLGHitProducerIdeal::Init(), PndEmcTmpWaveformToDigi::Init(), PndDrcDigiTask::Init(), Init(), PndSttMatchTracks::Init(), PndEmcWaveformToCalibratedDigi::Init(), PndTrkTracking2::Init(), PndSttFindTracks::Init(), PndEmcMultiWaveformToCalibratedDigi::Init(), PndDrcTimeDigiTask::Init(), PndRecoKalmanTask2::Init(), PndEmcExpClusterSplitter::Init(), PndSdsNoiseProducer::Init(), PndFtsHoughTrackerTask::Init(), PndEmcPhiBumpSplitter::Init(), PndSdsHybridHitProducer::Init(), PndSdsIdealRecoTask::Init(), PndRecoMultiKalmanTask::Init(), PndSdsIdealClusterTask::Init(), PndRecoKalmanTask::Init(), PndSdsStripHitProducerDif::Init(), PndSdsStripHitProducer::Init(), PndGemDigitize::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 PndEmcWaveformToDigi::Init ( )
virtual

Init Task.

Prepares the TClonesArrays of PndEmcWaveform for reading and of PndEmcDigi for writing. Also reads the EMC parameters and prepares the pulseshapes (PndEmcAbsPulseshape) and pulse shape analyser (PndEmcAbsPSA).

Returns
InitStatus
Return values
kSUCCESSsuccess

Definition at line 112 of file PndEmcWaveformToDigi.cxx.

References PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_delay, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_fit_offset, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_fitter_length, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::cf_ratio, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::clock_unit, PndEmcDigi::depth, Double_t, PndEmcPSAFPGADigitalFilterAnalyser::enable_mwd_filter(), fASIC_Shaping_int_time, fCalibrator, fCrystal_time_constant, fDigiArray, fDigiPar, fDigiPosMethod, fDigitizationVersion2, fEmcDigiPositionDepthPWO, fEmcDigiPositionDepthShashlyk, fEmcDigiRescaleFactor, fEnergyDigiThreshold, fEventNo, fFpgaPar, fFunctor, fFWD_Shaping_int_time, fFWD_time_constant, fNumber_of_samples_in_waveform, fNumber_of_samples_in_waveform_fwd, fNumber_of_samples_in_waveform_pmt, fPMT_Shaping_diff_time, fPMT_Shaping_int_time, fpsaAlgorithm, fpsaAlgorithm_fwd, fpsaAlgorithm_pmt, fPulseshape, fPulseshape_fwd, fPulseshape_pmt, fRecoPar, fSampleRate, fSampleRate_FWD, fSampleRate_PMT, fShashlyk_time_constant, fTimeOrderedDigi, fVerbose, fWaveformArray, fWfNormalisation, fWfNormalisation_fwd, fWfNormalisation_pmt, PndEmcDigiPar::GetASIC_Shaping_int_time(), PndEmcFpgaPar::GetBarrelCFDelayLength(), PndEmcFpgaPar::GetBarrelCFFilterLength(), PndEmcFpgaPar::GetBarrelCFFilterRatio(), PndEmcFpgaPar::GetBarrelCFFitterLength(), PndEmcFpgaPar::GetBarrelMAFilterLength(), PndEmcFpgaPar::GetBarrelMWDFilterLength(), PndEmcFpgaPar::GetBarrelMWDFilterLifeT(), PndEmcFpgaPar::GetBarrelMWDFilterUsed(), PndEmcFpgaPar::GetBarrelPulseThreshold(), PndEmcDigiPar::GetCrystal_time_constant(), PndEmcRecoPar::GetEmcDigiPositionDepthPWO(), PndEmcRecoPar::GetEmcDigiPositionDepthShashlyk(), PndEmcDigiPar::GetEnergyDigiThreshold(), PndEmcFpgaPar::GetForwardCFDelayLength(), PndEmcFpgaPar::GetForwardCFFilterLength(), PndEmcFpgaPar::GetForwardCFFilterRatio(), PndEmcFpgaPar::GetForwardCFFitterLength(), PndEmcFpgaPar::GetForwardMAFilterLength(), PndEmcFpgaPar::GetForwardMWDFilterLength(), PndEmcFpgaPar::GetForwardMWDFilterLifeT(), PndEmcFpgaPar::GetForwardMWDFilterUsed(), PndEmcFpgaPar::GetForwardPulseThreshold(), PndEmcDigiPar::GetFWD_Shaping_int_time(), PndEmcDigiPar::GetFWD_time_constant(), PndEmcAbsPSA::GetHit(), PndEmcDigiPar::GetNumber_of_samples_in_waveform(), PndEmcDigiPar::GetNumber_of_samples_in_waveform_fwd(), PndEmcDigiPar::GetNumber_of_samples_in_waveform_pmt(), PndPersistencyTask::GetPersistency(), PndEmcDigiPar::GetPMT_Shaping_diff_time(), PndEmcDigiPar::GetPMT_Shaping_int_time(), PndEmcDigiPar::GetSampleRate(), PndEmcDigiPar::GetSampleRate_FWD(), PndEmcDigiPar::GetSampleRate_PMT(), PndEmcDigiPar::GetShashlyk_time_constant(), PndEmcFpgaPar::GetShashylikCFDelayLength(), PndEmcFpgaPar::GetShashylikCFFilterLength(), PndEmcFpgaPar::GetShashylikCFFilterRatio(), PndEmcFpgaPar::GetShashylikCFFitterLength(), PndEmcFpgaPar::GetShashylikMAFilterLength(), PndEmcFpgaPar::GetShashylikMWDFilterLength(), PndEmcFpgaPar::GetShashylikMWDFilterLifeT(), PndEmcFpgaPar::GetShashylikMWDFilterUsed(), PndEmcFpgaPar::GetShashylikPulseThreshold(), PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::hit_threshold, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::iafactor, PndEmcPSAFPGADigitalFilterAnalyser::init(), PndEmcAbsCrystalCalibrator::Init(), PndEmcDigi::InitDigiArrayTBD(), PndEmcStructure::Instance(), PndEmcWaveform::Integral(), PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::ma_trig_M, PndEmcWaveform::Max(), PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd_length, PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams::mwd_tau, PndEmcAbsPSA::Process(), PndEmcDigi::selectDigiPositionMethod(), PndEmcPSAFPGADigitalFilterAnalyser::setBaselineInterval(), PndEmcSimCrystalCalibrator::SetCalibration(), PndEmcHit::SetEnergy(), PndEmcHit::SetTime(), PndEmcDigi::surface, totDigisAboveThreshold, totExpHits, totHits, totNumOfWave, and PndEmcWaveform::UpdateWaveform().

113 {
115  // Get RootManager
116  FairRootManager* ioman = FairRootManager::Instance();
117  if ( ! ioman )
118  {
119  cout << "-E- PndEmcWaveformToDigi::Init: "
120  << "RootManager not instantiated!" << endl;
121  return kFATAL;
122  }
123 
124  // Get input array
125  if(fTimeOrderedDigi){
126  fWaveformArray = dynamic_cast<TClonesArray *>( ioman->GetObject("EmcSortedWaveform"));
127  if (!FairRunAna::Instance()->IsTimeStamp()) {
128  cout << "-W- PndEmcWaveformToDigi::Init: "
129  << "Task running timebased, but run not running timebased" << endl;
130  }
131  }else{
132  fWaveformArray =dynamic_cast<TClonesArray *> (ioman->GetObject("EmcWaveform"));
133  }
134 // fWaveformArrayOrg = (TClonesArray*) ioman->GetObject("EmcWaveform");
135  //fEvtHeaderArray = (TClonesArray*) ioman->GetObject("EventHeader.");
136 
137  if ( ! fWaveformArray ) {
138  cout << "-W- PndEmcWaveformToDigi::Init: "
139  << "No PndEmcWaveform array!" << endl;
140  return kERROR;
141  }
142 
143  // Create and register output array
144  fDigiArray = new TClonesArray("PndEmcDigi");
145  ioman->Register("EmcDigi","Emc",fDigiArray,GetPersistency());
146 
147 
164 
165  if(fVerbose>2){
166  cout<<"fEnergyDigiThreshold: "<<fEnergyDigiThreshold<<endl;
167  cout<<"fEmcDigiPositionDepthPWO: "<<fEmcDigiPositionDepthPWO<<endl;
168  cout<<"fEmcDigiPositionDepthShashlyk: "<<fEmcDigiPositionDepthShashlyk<<endl;
169  }
170 
171  if (!fDigiPosMethod.CompareTo("surface"))
172  {
174  }
175  else if (!fDigiPosMethod.CompareTo("depth"))
176  {
179  }
180  else
181  {
182  cout << "-W- PndEmcWaveformToDigi::Init: "
183  << "Unknown digi position method!" << endl;
184  return kERROR;
185  }
186 
189  fPulseshape_fwd =new PndEmcAsicPulseshape(fFWD_Shaping_int_time, fFWD_time_constant);//LNP raw signal, decay time constant 25 microseconds
190 
191  // Determine normalisation constant for PndEmcWaveform
194  PndEmcWaveform *tmpwaveform3=new PndEmcWaveform(0,101010001, fSampleRate_FWD, fNumber_of_samples_in_waveform_fwd);//length 10
195 
196  PndEmcHit *gevHit=new PndEmcHit();
197  gevHit->SetEnergy(1.0);
198  gevHit->SetTime(0.);
199  tmpwaveform1->UpdateWaveform(gevHit, 0, false, 1., 0., fSampleRate, fPulseshape);
200  tmpwaveform2->UpdateWaveform(gevHit, 0, false, 1., 0., fSampleRate_PMT, fPulseshape_pmt);
201  tmpwaveform3->UpdateWaveform(gevHit, 0, false, 1., 0., fSampleRate_FWD, fPulseshape_fwd);
202 
203  fWfNormalisation = tmpwaveform1->Max();
204  fWfNormalisation_pmt = tmpwaveform2->Max();
205  fWfNormalisation_fwd = tmpwaveform3->Max();
206 
207  fFpgaPar->printParams();
208  if(fVerbose > 2){
209  cout<<"fWfNormalisation#"<<fWfNormalisation<<", I/A ="<<(tmpwaveform1->Integral()/fWfNormalisation)<<endl;
210  cout<<"fWfNormalisation#"<<fWfNormalisation<<", I ="<<tmpwaveform1->Integral()<<endl;
211  cout<<"fWfNormalisation_pmt#"<<fWfNormalisation_pmt<<", I/A ="<<(tmpwaveform2->Integral()/fWfNormalisation_pmt)<<endl;
212  cout<<"fWfNormalisation_fwd#"<<fWfNormalisation_fwd<<", I ="<<(tmpwaveform3->Integral())<<endl;
213  cout<<"fWfNormalisation_fwd#"<<fWfNormalisation_fwd<<", I/A ="<<(tmpwaveform3->Integral()/fWfNormalisation_fwd)<<endl;
214  }
215  //setup barrel backward
226  newParams.clock_unit = 1./fSampleRate*1.e9;//in unit of ns
227  newParams.iafactor = tmpwaveform1->Integral()/fWfNormalisation;//31.4166;
229  theAlg2->init(newParams);
230  theAlg2->setBaselineInterval(0,0);
231  fpsaAlgorithm= theAlg2;
232  //setup forward digital filter
234  //PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams newParams;
242  newParams.hit_threshold = fFpgaPar->GetForwardPulseThreshold()*fWfNormalisation_fwd*0.001;//five times larger than noise,
243  newParams.clock_unit = 1./fSampleRate_FWD*1.e9;//in unit of ns
244  newParams.iafactor = tmpwaveform3->Integral()/fWfNormalisation_fwd;//151.408;
246  theAlg1->init(newParams);
247  theAlg1->setBaselineInterval(0,0);
248  fpsaAlgorithm_fwd = theAlg1;
249 
250  //setup shashylik
252  //PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams newParams;
261  newParams.clock_unit = 1./fSampleRate_PMT*1.e9;//in unit of ns
262  newParams.iafactor = tmpwaveform2->Integral()/fWfNormalisation_pmt;//5.08306;//this factor depends on the pulseshape function
264  theAlg3->init(newParams);
265  theAlg3->setBaselineInterval(0,0);
266  fpsaAlgorithm_pmt = theAlg3;
267 
268  //Int_t iMapperVersion;
269  //PndEmcMapper::Init(iMapperVersion=1);
271 
272  fFunctor = new StopTime();
273  fEventNo = 0;
274 
276  // Matched digital filter
277  // Parameters of the filter are hardcoded at the moment
278  // For different pulseshape in barrel and endcaps different filters should be implemented
279  std::vector<Double_t> params;
280  params.push_back(30); // width
281  params.push_back(fSampleRate); // Sample rate
284  // Pulse shape analysis algorithm.
285  // Simple parabolic fit.
287  }
288 
289  if(fCalibrator == NULL){
291  // Determine normalisation constant for PndEmcWaveform
292  Double_t tmpPeakPosition;
293  Double_t WfNormalisation;
294  fpsaAlgorithm->Process(tmpwaveform1);
295  fpsaAlgorithm->GetHit(0, WfNormalisation, tmpPeakPosition);
296  SimCalibrator->SetCalibration(1,WfNormalisation); // Barrel
297  SimCalibrator->SetCalibration(2,WfNormalisation); // Barrel
298  SimCalibrator->SetCalibration(4,WfNormalisation); // Backward endcap
299  fpsaAlgorithm_pmt->Process(tmpwaveform2);
300  fpsaAlgorithm_pmt->GetHit(0, WfNormalisation, tmpPeakPosition);
301  SimCalibrator->SetCalibration(5,WfNormalisation); // Shashlyk
302  fpsaAlgorithm_fwd->Process(tmpwaveform3);
303  fpsaAlgorithm_fwd->GetHit(0, WfNormalisation, tmpPeakPosition);
304  SimCalibrator->SetCalibration(3,WfNormalisation); // Forward endcap
305  fCalibrator=SimCalibrator;
306  }
307  fCalibrator->Init();
308 
309 
310  delete tmpwaveform1;
311  delete tmpwaveform2;
312  delete tmpwaveform3;
313  //delete tmpwaveform4;
314  delete gevHit;
315 
317  totHits = 0;
318  totExpHits = 0;
319  totNumOfWave = 0;
320 
321  cout << "-I- PndEmcWaveformToDigi: Intialization successfull" << endl;
322  return kSUCCESS;
323 }
Int_t GetBarrelMAFilterLength()
Definition: PndEmcFpgaPar.h:11
virtual void init(PndEmcPSAFPGASampleAnalyser::SampleAnalyserParams &params)
Int_t GetForwardMWDFilterUsed()
Definition: PndEmcFpgaPar.h:26
Double_t Integral() const
Double_t GetEmcDigiPositionDepthShashlyk()
Definition: PndEmcRecoPar.h:25
Double_t GetSampleRate()
Definition: PndEmcDigiPar.h:39
Int_t GetForwardCFDelayLength()
Definition: PndEmcFpgaPar.h:25
Double_t GetPMT_Shaping_diff_time()
Definition: PndEmcDigiPar.h:33
static void selectDigiPositionMethod(PositionMethod, double positionDepthPWO=0., double positionDepthShahslyk=0., double rescaleFactor=1.)
Definition: PndEmcDigi.cxx:153
Int_t GetForwardCFFitterLength()
Definition: PndEmcFpgaPar.h:24
Int_t GetNumber_of_samples_in_waveform()
Definition: PndEmcDigiPar.h:44
Pulseshape analysis for ADC waveforms.
Int_t GetShashylikCFFitterLength()
Definition: PndEmcFpgaPar.h:34
PndEmcAbsPulseshape * fPulseshape
Int_t GetShashylikMWDFilterUsed()
Definition: PndEmcFpgaPar.h:36
Double_t GetBarrelPulseThreshold()
Definition: PndEmcFpgaPar.h:19
virtual Int_t Process(const PndEmcWaveform *waveform)=0
Find Hits in Waveform.
Double_t GetCrystal_time_constant()
Definition: PndEmcDigiPar.h:36
Pulseshape analysis for ADC waveforms.
Double_t GetForwardMWDFilterLifeT()
Definition: PndEmcFpgaPar.h:28
Double_t GetShashylikCFFilterRatio()
Definition: PndEmcFpgaPar.h:33
Double_t GetBarrelCFFilterRatio()
Definition: PndEmcFpgaPar.h:13
Int_t GetBarrelMWDFilterUsed()
Definition: PndEmcFpgaPar.h:16
virtual void GetHit(Int_t i, Double_t &energy, Double_t &time)=0
Get energy and time of hit.
static void InitDigiArrayTBD()
Definition: PndEmcDigi.cxx:89
Double_t GetASIC_Shaping_int_time()
Definition: PndEmcDigiPar.h:31
Pulseshape from an CRRC-Shaper.
Double_t GetEnergyDigiThreshold()
Definition: PndEmcDigiPar.h:42
Double_t GetSampleRate_FWD()
Definition: PndEmcDigiPar.h:41
Int_t GetBarrelMWDFilterLength()
Definition: PndEmcFpgaPar.h:17
Int_t GetForwardCFFilterLength()
Definition: PndEmcFpgaPar.h:22
Int_t GetShashylikCFFilterLength()
Definition: PndEmcFpgaPar.h:32
Int_t GetShashylikCFDelayLength()
Definition: PndEmcFpgaPar.h:35
Pulseshape from an APFEL ASIC preamplifier shaper.
Double_t
Int_t GetShashylikMWDFilterLength()
Definition: PndEmcFpgaPar.h:37
Int_t GetBarrelCFFilterLength()
Definition: PndEmcFpgaPar.h:12
virtual void SetCalibration(Int_t ModId, Double_t cal, Int_t SignalNr=1, Double_t overflow=-1)
Set Calibration for a Module.
virtual void setBaselineInterval(int anl_start, int bl_stop)
Double_t GetShashylikPulseThreshold()
Definition: PndEmcFpgaPar.h:39
Double_t GetFWD_Shaping_int_time()
Definition: PndEmcDigiPar.h:34
Double_t GetShashylikMWDFilterLifeT()
Definition: PndEmcFpgaPar.h:38
Int_t GetBarrelCFDelayLength()
Definition: PndEmcFpgaPar.h:14
Int_t GetForwardMWDFilterLength()
Definition: PndEmcFpgaPar.h:27
Class to simulate a Calibration.
void UpdateWaveform(PndEmcHit *hit, Double_t pePerMeV, Bool_t usePhotonStatistic, Double_t excessNoiseFactor, Double_t firstADCBinTime, Double_t sampleRate, PndEmcAbsPulseshape *pulseshape, Double_t=0)
virtual void SetEnergy(Double32_t energy)
Definition: PndEmcHit.h:50
Int_t GetShashylikMAFilterLength()
Definition: PndEmcFpgaPar.h:31
Int_t GetForwardMAFilterLength()
Definition: PndEmcFpgaPar.h:21
represents a simulated waveform in an emc crystal
Int_t GetNumber_of_samples_in_waveform_fwd()
Definition: PndEmcDigiPar.h:46
represents the deposited energy of one emc crystal from simulation
Definition: PndEmcHit.h:26
PndEmcAbsPSA * fpsaAlgorithm_pmt
Double_t GetFWD_time_constant()
Definition: PndEmcDigiPar.h:35
Double_t GetForwardCFFilterRatio()
Definition: PndEmcFpgaPar.h:23
Double_t GetSampleRate_PMT()
Definition: PndEmcDigiPar.h:40
static PndEmcStructure * Instance()
PndEmcAbsPulseshape * fPulseshape_fwd
virtual void SetTime(Double32_t time)
Definition: PndEmcHit.h:51
Double_t GetBarrelMWDFilterLifeT()
Definition: PndEmcFpgaPar.h:18
PndEmcAbsCrystalCalibrator * fCalibrator
Double_t GetShashlyk_time_constant()
Definition: PndEmcDigiPar.h:37
Bool_t fTimeOrderedDigi
set to kTRUE to use the time ordering of the output data.
Int_t GetBarrelCFFitterLength()
Definition: PndEmcFpgaPar.h:15
Int_t GetNumber_of_samples_in_waveform_pmt()
Definition: PndEmcDigiPar.h:45
PndEmcAbsPSA * fpsaAlgorithm_fwd
Double_t GetPMT_Shaping_int_time()
Definition: PndEmcDigiPar.h:32
PndEmcAbsPulseshape * fPulseshape_pmt
Double_t GetForwardPulseThreshold()
Definition: PndEmcFpgaPar.h:29
Double_t GetEmcDigiPositionDepthPWO()
Definition: PndEmcRecoPar.h:24
PndEmcWaveformToDigi& PndEmcWaveformToDigi::operator= ( const PndEmcWaveformToDigi )
private
void PndEmcWaveformToDigi::RunTimeBased ( )
inline

Definition at line 62 of file PndEmcWaveformToDigi.h.

References fTimeOrderedDigi.

62 {fTimeOrderedDigi = kTRUE;}
Bool_t fTimeOrderedDigi
set to kTRUE to use the time ordering of the output data.
virtual void PndEmcWaveformToDigi::SetCrystalCalibrator ( PndEmcAbsCrystalCalibrator Cal)
inlinevirtual

Set The Crystal Calibrator to use.

Parameters
CalThe Calibrator to be used
Returns

Definition at line 96 of file PndEmcWaveformToDigi.h.

References fCalibrator.

96 {fCalibrator=Cal;}
PndEmcAbsCrystalCalibrator * fCalibrator
void PndEmcWaveformToDigi::SetFakeOnline ( bool  d = true)
inline

Definition at line 65 of file PndEmcWaveformToDigi.h.

References d, and fFakeOnline.

Referenced by PndMasterDigiTask::PndMasterDigiTask().

65 {fFakeOnline=d;};
TObjArray * d
void PndEmcWaveformToDigi::SetParContainers ( )
protectedvirtual

Get parameter containers

Definition at line 485 of file PndEmcWaveformToDigi.cxx.

References fDigiPar, fFpgaPar, fRecoPar, and run.

485  {
486 
487  // Get run and runtime database
488  FairRun* run = FairRun::Instance();
489  if ( ! run ) Fatal("SetParContainers", "No analysis run");
490 
491  FairRuntimeDb* db = run->GetRuntimeDb();
492  if ( ! db ) Fatal("SetParContainers", "No runtime database");
493 
494  // Get Emc digitisation parameter container
495  fDigiPar = (PndEmcDigiPar*) db->getContainer("PndEmcDigiPar");
496 
497  // Get Emc reconstruction parameter container
498  fRecoPar = (PndEmcRecoPar*) db->getContainer("PndEmcRecoPar");
499 
500  // Get Emc FPGA parameter container
501  fFpgaPar = (PndEmcFpgaPar*) db->getContainer("PndEmcFpgaPar");
502 }
Int_t run
Definition: autocutx.C:47
parameter set of Emc digitisation
Definition: PndEmcDigiPar.h:12
Parameter set for Emc Reco.
Definition: PndEmcRecoPar.h:12
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(), 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(), PndSttHitProducerIdeal::SetPersistence(), PndSttHitProducerRealFull::SetPersistence(), PndSttHitProducerRealFast::SetPersistence(), PndFtsHitProducerIdeal::SetPersistence(), PndTrackSmearTask::SetPersistence(), PndSciTHitProducerIdeal::SetPersistence(), PndIdealTrackFinder::SetPersistence(), PndSttMatchTracks::SetPersistence(), PndSttFindTracks::SetPersistence(), PndFtsHoughTrackerTask::SetPersistence(), PndTrkTracking2::SetPersistence(), PndEmcMakeRecoHit::SetStorageOfData(), PndEmcMakeClusterOnline::SetStorageOfData(), PndEmcFWEndcapDigi::SetStorageOfData(), PndEmcFWEndcapTimebasedWaveforms::SetStorageOfData(), PndEmcMakeDigi::SetStorageOfData(), PndMdtPointsToWaveform::SetStorageOfData(), PndEmc2DLocMaxFinder::SetStorageOfData(), PndEmcMakeCluster::SetStorageOfData(), PndEmcHitsToWaveform::SetStorageOfData(), PndEmcMakeBump::SetStorageOfData(), PndEmcTmpWaveformToDigi::SetStorageOfData(), 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
virtual void PndEmcWaveformToDigi::SetPSAAlgorithm ( PndEmcAbsPSA psa)
inlinevirtual

Set PSA Algorithm to be used for Barrel and Backward Endcap.

Parameters
psaThe psa to be used

Definition at line 73 of file PndEmcWaveformToDigi.h.

References fpsaAlgorithm.

73 {fpsaAlgorithm=psa;}
virtual void PndEmcWaveformToDigi::SetPSAAlgorithmFWD ( PndEmcAbsPSA psa)
inlinevirtual

Set PSA Algorithm to be used for Forward Endcap.

Parameters
psaThe psa to be used

Definition at line 80 of file PndEmcWaveformToDigi.h.

References fpsaAlgorithm_fwd.

80 {fpsaAlgorithm_fwd=psa;}
PndEmcAbsPSA * fpsaAlgorithm_fwd
virtual void PndEmcWaveformToDigi::SetPSAAlgorithmPMT ( PndEmcAbsPSA psa)
inlinevirtual

Set PSA Algorithm to be used for Forward Shashlik.

Parameters
psaThe psa to be used
Returns

Definition at line 88 of file PndEmcWaveformToDigi.h.

References fpsaAlgorithm_pmt.

88 {fpsaAlgorithm_pmt=psa;}
PndEmcAbsPSA * fpsaAlgorithm_pmt
void PndEmcWaveformToDigi::SetStorageOfData ( Bool_t  val)

Definition at line 504 of file PndEmcWaveformToDigi.cxx.

References PndPersistencyTask::SetPersistency().

Referenced by digi_sttcombi(), emc(), emc_complete(), emc_complete_corr(), emc_correction_data_production(), emc_correction_QA_data_production(), and runDigiReco().

505 {
507  return;
508 }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
void SetPersistency(Bool_t val=kTRUE)
Float_t PndEmcWaveformToDigi::SmearFakeOnline ( Float_t  energy)
private

Definition at line 597 of file PndEmcWaveformToDigi.cxx.

References energy, fFakeOnline, and sqrt().

Referenced by Exec().

598 { // Additional fake energy resolution to get about a factor 2 worse
599  // dE/E =~ 1% + 1.63%/(E/GeV)
600  if(!fFakeOnline) return energy;
601  Float_t resolution=0.01*energy+0.0163*sqrt(energy);
602  return gRandom->Gaus(energy,resolution);
603 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Double_t energy
Definition: plot_dirc.C:15
void PndEmcWaveformToDigi::UseDigitizationVersion2 ( )
inline

Definition at line 64 of file PndEmcWaveformToDigi.h.

References fDigitizationVersion2.

Member Data Documentation

TVectorD PndEmcWaveformToDigi::CoeffMod3
private

Definition at line 167 of file PndEmcWaveformToDigi.h.

TVectorD PndEmcWaveformToDigi::CoeffMod5
private

Definition at line 168 of file PndEmcWaveformToDigi.h.

TVectorD PndEmcWaveformToDigi::CoeffModo
private

Definition at line 169 of file PndEmcWaveformToDigi.h.

Double_t PndEmcWaveformToDigi::fASIC_Shaping_int_time
private

Definition at line 124 of file PndEmcWaveformToDigi.h.

Referenced by Init().

PndEmcAbsCrystalCalibrator* PndEmcWaveformToDigi::fCalibrator
private

Definition at line 148 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), Init(), and SetCrystalCalibrator().

Double_t PndEmcWaveformToDigi::fCrystal_time_constant
private

Definition at line 127 of file PndEmcWaveformToDigi.h.

Referenced by Init().

TClonesArray* PndEmcWaveformToDigi::fDigiArray
private

output array of EmcDigis

Definition at line 118 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), and Init().

PndEmcDigiPar* PndEmcWaveformToDigi::fDigiPar
private

Definition at line 150 of file PndEmcWaveformToDigi.h.

Referenced by Init(), and SetParContainers().

TString PndEmcWaveformToDigi::fDigiPosMethod
private

Definition at line 136 of file PndEmcWaveformToDigi.h.

Referenced by Init(), and PndEmcWaveformToDigi().

Bool_t PndEmcWaveformToDigi::fDigitizationVersion2
private

Definition at line 181 of file PndEmcWaveformToDigi.h.

Referenced by Init(), and UseDigitizationVersion2().

Double_t PndEmcWaveformToDigi::fEmcDigiPositionDepthPWO
private

Definition at line 138 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Double_t PndEmcWaveformToDigi::fEmcDigiPositionDepthShashlyk
private

Definition at line 139 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Double_t PndEmcWaveformToDigi::fEmcDigiRescaleFactor
private

Definition at line 137 of file PndEmcWaveformToDigi.h.

Referenced by Init(), and PndEmcWaveformToDigi().

Double_t PndEmcWaveformToDigi::fEnergyDigiThreshold
private

Definition at line 123 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), FinishTask(), and Init().

Int_t PndEmcWaveformToDigi::fEventNo
private

Definition at line 171 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), and Init().

TClonesArray* PndEmcWaveformToDigi::fEvtHeaderArray
private

Definition at line 115 of file PndEmcWaveformToDigi.h.

bool PndEmcWaveformToDigi::fFakeOnline
private

Definition at line 183 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), SetFakeOnline(), and SmearFakeOnline().

PndEmcFpgaPar* PndEmcWaveformToDigi::fFpgaPar
private

Reconstruction parameter container

Definition at line 152 of file PndEmcWaveformToDigi.h.

Referenced by Init(), and SetParContainers().

BinaryFunctor* PndEmcWaveformToDigi::fFunctor
private

Definition at line 164 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), and Init().

Double_t PndEmcWaveformToDigi::fFWD_Shaping_int_time
private

Definition at line 132 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Double_t PndEmcWaveformToDigi::fFWD_time_constant
private

Definition at line 133 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Int_t PndEmcWaveformToDigi::fNumber_of_samples_in_waveform
private

Definition at line 129 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Int_t PndEmcWaveformToDigi::fNumber_of_samples_in_waveform_fwd
private

Definition at line 131 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Int_t PndEmcWaveformToDigi::fNumber_of_samples_in_waveform_pmt
private

Definition at line 130 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Double_t PndEmcWaveformToDigi::fPMT_Shaping_diff_time
private

Definition at line 126 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Double_t PndEmcWaveformToDigi::fPMT_Shaping_int_time
private

Definition at line 125 of file PndEmcWaveformToDigi.h.

Referenced by Init().

PndEmcAbsPSA* PndEmcWaveformToDigi::fpsaAlgorithm
private

Definition at line 144 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), Init(), and SetPSAAlgorithm().

PndEmcAbsPSA* PndEmcWaveformToDigi::fpsaAlgorithm_fwd
private

Definition at line 146 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), Init(), and SetPSAAlgorithmFWD().

PndEmcAbsPSA* PndEmcWaveformToDigi::fpsaAlgorithm_pmt
private

Definition at line 145 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), Init(), and SetPSAAlgorithmPMT().

PndEmcAbsPulseshape* PndEmcWaveformToDigi::fPulseshape
private

Definition at line 141 of file PndEmcWaveformToDigi.h.

Referenced by Init(), and ~PndEmcWaveformToDigi().

PndEmcAbsPulseshape* PndEmcWaveformToDigi::fPulseshape_fwd
private

Definition at line 143 of file PndEmcWaveformToDigi.h.

Referenced by Init(), and ~PndEmcWaveformToDigi().

PndEmcAbsPulseshape* PndEmcWaveformToDigi::fPulseshape_pmt
private

Definition at line 142 of file PndEmcWaveformToDigi.h.

Referenced by Init(), and ~PndEmcWaveformToDigi().

PndEmcRecoPar* PndEmcWaveformToDigi::fRecoPar
private

Digitisation parameter container

Definition at line 151 of file PndEmcWaveformToDigi.h.

Referenced by Init(), and SetParContainers().

Double_t PndEmcWaveformToDigi::fSampleRate
private

Definition at line 120 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), and Init().

Double_t PndEmcWaveformToDigi::fSampleRate_FWD
private

Definition at line 122 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), and Init().

Double_t PndEmcWaveformToDigi::fSampleRate_PMT
private

Definition at line 121 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), and Init().

Double_t PndEmcWaveformToDigi::fShashlyk_time_constant
private

Definition at line 128 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Bool_t PndEmcWaveformToDigi::fTimeOrderedDigi
private

set to kTRUE to use the time ordering of the output data.

Definition at line 158 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), Init(), and RunTimeBased().

Double_t PndEmcWaveformToDigi::fTimeShift
private

Definition at line 173 of file PndEmcWaveformToDigi.h.

Referenced by Exec().

Double_t PndEmcWaveformToDigi::fTimeWindow
private

Definition at line 172 of file PndEmcWaveformToDigi.h.

Int_t PndEmcWaveformToDigi::fVerbose
private

FPGA parameter container Verbosity level

Definition at line 157 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), and Init().

TClonesArray* PndEmcWaveformToDigi::fWaveformArray
private

Input array of PndEmcWaveforms

Definition at line 113 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), and Init().

Double_t PndEmcWaveformToDigi::fWfNormalisation
private

Definition at line 160 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Double_t PndEmcWaveformToDigi::fWfNormalisation_fwd
private

Definition at line 161 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Double_t PndEmcWaveformToDigi::fWfNormalisation_pmt
private

Definition at line 162 of file PndEmcWaveformToDigi.h.

Referenced by Init().

Int_t PndEmcWaveformToDigi::totDigisAboveThreshold
private

Definition at line 176 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), FinishTask(), and Init().

Int_t PndEmcWaveformToDigi::totExpHits
private

Definition at line 178 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), FinishTask(), and Init().

Int_t PndEmcWaveformToDigi::totHits
private

Definition at line 177 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), FinishTask(), and Init().

Int_t PndEmcWaveformToDigi::totNumOfWave
private

Definition at line 179 of file PndEmcWaveformToDigi.h.

Referenced by Exec(), FinishTask(), and Init().


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