FairRoot/PandaRoot
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndEmcApdHitProducer Class Reference

#include <PndEmcApdHitProducer.h>

Inheritance diagram for PndEmcApdHitProducer:
PndPersistencyTask

Public Types

typedef std::map< Int_t, Float_t > mapper
 

Public Member Functions

 PndEmcApdHitProducer ()
 
 ~PndEmcApdHitProducer ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 
PndEmcApdHitAddHit (Int_t trackID, Int_t detID, Float_t energy, Float_t time, Int_t npoint, Int_t pointIndex[10])
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

Private Member Functions

 PndEmcApdHitProducer (const PndEmcApdHitProducer &L)
 
PndEmcApdHitProduceroperator= (const PndEmcApdHitProducer &)
 
 ClassDef (PndEmcApdHitProducer, 1)
 

Private Attributes

TClonesArray * fPointArray
 
TClonesArray * fDigiArray
 
TObjArray * fVolumeArray
 
Int_t fMapVersion
 
mapper emcX
 
mapper emcY
 
mapper emcZ
 
PndEmcStructurefEmcStr
 

Detailed Description

Definition at line 21 of file PndEmcApdHitProducer.h.

Member Typedef Documentation

typedef std::map<Int_t, Float_t> PndEmcApdHitProducer::mapper

Definition at line 25 of file PndEmcApdHitProducer.h.

Constructor & Destructor Documentation

PndEmcApdHitProducer::PndEmcApdHitProducer ( )

Default constructor

Definition at line 39 of file PndEmcApdHitProducer.cxx.

39  :
40  PndPersistencyTask("Ideal EMC APD hit Producer"), fPointArray(0), fDigiArray(0), fVolumeArray(new TObjArray),
41  fMapVersion(0), emcX(), emcY(), emcZ(), fEmcStr()
42 {
43 }
PndEmcStructure * fEmcStr
PndEmcApdHitProducer::~PndEmcApdHitProducer ( )

Destructor

Definition at line 47 of file PndEmcApdHitProducer.cxx.

References fEmcStr.

47 { delete fEmcStr;}
PndEmcStructure * fEmcStr
PndEmcApdHitProducer::PndEmcApdHitProducer ( const PndEmcApdHitProducer L)
private

Member Function Documentation

PndEmcApdHit * PndEmcApdHitProducer::AddHit ( Int_t  trackID,
Int_t  detID,
Float_t  energy,
Float_t  time,
Int_t  npoint,
Int_t  pointIndex[10] 
)

Definition at line 157 of file PndEmcApdHitProducer.cxx.

References emcX, emcY, emcZ, and fDigiArray.

Referenced by Exec().

157  {
158  // It fills the PndEmcApdHit category
159  //cout << "PndEmcApdHitProducer: track " << trackID << " evt " << eventID << " sec " << sec << " plane " << pla << " strip " << strip << "box " << box << " tube " << tub << endl;
160  TClonesArray& clref = *fDigiArray;
161  Int_t size = clref.GetEntriesFast();
162  return new(clref[size]) PndEmcApdHit(trackID, detID, energy, time, emcX[detID], emcY[detID], emcZ[detID], npoint, pointIndex);
163 }
int npoint
Double_t energy
Definition: plot_dirc.C:15
PndEmcApdHitProducer::ClassDef ( PndEmcApdHitProducer  ,
 
)
private
void PndEmcApdHitProducer::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 104 of file PndEmcApdHitProducer.cxx.

References AddHit(), fDigiArray, fPointArray, PndEmcApdPoint::GetFlag(), p, and point.

104  {
105  //cout << " DIGI EXECUTION *********************" << endl;
106  // Reset output array
107  if ( ! fDigiArray ) Fatal("Exec", "No DigiArray");
108  fDigiArray->Delete();
109 
110  // Declare some variables
111  PndEmcApdPoint* point = NULL;
112  map<Int_t, Float_t> fTrackEnergy;
113  map<Int_t, Float_t> fTrackTime; //time of first point
114  map<Int_t, TArrayI> fPointIndex; // index of MC points
115 
116  fTrackEnergy.clear();
117  fTrackTime.clear();
118  fPointIndex.clear();
119 
120 
121  map<Int_t, Float_t>::const_iterator p;
122 
123  std::vector<PndEmcApdPoint*> fPointList;// to pass to EmcApdHit
124 
125  // Loop over EmcApdPoints
126  Int_t nPoints = fPointArray->GetEntriesFast();
127 
128  //Double_t point_time; //[R.K. 01/2017] unused variable
129  for (Int_t iPoint=0; iPoint<nPoints; iPoint++)
130  {
131  point = (PndEmcApdPoint*) fPointArray->At(iPoint);
132  fTrackEnergy[point->GetDetectorID()] += point->GetEnergyLoss();
133  //point_time=point ->GetTime(); //[R.K. 01/2017] unused variable
134  if (point->GetFlag()==-1) {
135  fPointIndex[point->GetDetectorID()].Set(fPointIndex[point->GetDetectorID()].GetSize()+1);
136  fPointIndex[point->GetDetectorID()].AddAt(point->GetTrackID(),fPointIndex[point->GetDetectorID()].GetSize()-1);
137  }
138  }
139  // Loop over EmcApdPoint
140 
141 
142  // Loop to register EmcApdHit
143  for(p=fTrackEnergy.begin(); p!=fTrackEnergy.end(); ++p) {
144  if ((*p).second>0.) {
145  Int_t index[10] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1} ;
146  for (Int_t ii=0; ii< (fPointIndex[(*p).first].GetSize()); ii++)
147  if (ii<10) index[ii] = fPointIndex[(*p).first].At(ii);
148  AddHit(1, (*p).first, (*p).second, fTrackTime[(*p).first],fPointIndex[(*p).first].GetSize(), index);
149  }
150  }
151 
152 
153 }
Double_t p
Definition: anasim.C:58
Short_t GetFlag() const
PndEmcApdHit * AddHit(Int_t trackID, Int_t detID, Float_t energy, Float_t time, Int_t npoint, Int_t pointIndex[10])
PndSdsMCPoint * point
Definition: anaLmdCluster.C:72
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(), PndSttHitProducerRealFast::Init(), PndDiscTaskReconstruction::Init(), PndRichHitProducer::Init(), PndSttHelixHitProducer::Init(), PndDiscTaskPID::Init(), PndIdealTrackFinder::Init(), PndSttMvdGemTracking::Init(), PndMdtTrkProducer::Init(), PndFtsHitProducerRealFull::Init(), PndLmdPixelClusterTask::Init(), PndSttHitProducerRealFull::Init(), PndLmdStripClusterTask::Init(), 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 PndEmcApdHitProducer::Init ( )
virtual

Virtual method Init

Definition at line 53 of file PndEmcApdHitProducer.cxx.

References emcX, emcY, emcZ, fDigiArray, fEmcStr, fPointArray, PndEmcStructure::GetEmcX(), PndEmcStructure::GetEmcY(), PndEmcStructure::GetEmcZ(), PndPersistencyTask::GetPersistency(), and PndEmcStructure::Instance().

53  {
54 
55  cout << " INITIALIZATION *********************" << endl;
56 
57  //FairDetector::Initialize();
58  //FairRun* sim = FairRun::Instance();
59  //FairRuntimeDb* rtdb=sim->GetRuntimeDb();
60 
61  // Get RootManager
62  FairRootManager* ioman = FairRootManager::Instance();
63  if ( ! ioman ) {
64  cout << "-E- PndEmcApdHitProducer::Init: "
65  << "RootManager not instantiated!" << endl;
66  return kFATAL;
67  }
68 
69  // Get input array
70  fPointArray = (TClonesArray*) ioman->GetObject("EmcApdPoint");
71  if ( ! fPointArray ) {
72  cout << "-W- PndEmcApdHitProducer::Init: "
73  << "No EmcApdPoint array!" << endl;
74  return kERROR;
75  }
76 
77  // Create and register output array
78  fDigiArray = new TClonesArray("PndEmcApdHit");
79 
80  ioman->Register("EmcApdHit","Emc",fDigiArray, GetPersistency());
81 
82  // Geometry loading
83 // TFile *infile = ioman->GetInFile();
84 // TGeoManager *geoMan = (TGeoManager*) infile->Get("FAIRGeom");
85 // TGeoManager *geoMan = (TGeoManager*) gROOT->FindObject("FAIRGeom");
86 
87  //fMapVersion=1;
88  //PndEmcMapper::Init(fMapVersion);
90 
91  emcX=fEmcStr->GetEmcX();
92  emcY=fEmcStr->GetEmcY();
93  emcZ=fEmcStr->GetEmcZ();;
94 
95  cout << "-I- PndEmcApdHitProducer: Intialization successfull" << endl;
96 
97  return kSUCCESS;
98 
99 }
const mapper & GetEmcY() const
PndEmcStructure * fEmcStr
static PndEmcStructure * Instance()
const mapper & GetEmcZ() const
const mapper & GetEmcX() const
PndEmcApdHitProducer& PndEmcApdHitProducer::operator= ( const PndEmcApdHitProducer )
inlineprivate

Definition at line 70 of file PndEmcApdHitProducer.h.

70 {return *this;}
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

mapper PndEmcApdHitProducer::emcX
private

Definition at line 63 of file PndEmcApdHitProducer.h.

Referenced by AddHit(), and Init().

mapper PndEmcApdHitProducer::emcY
private

Definition at line 64 of file PndEmcApdHitProducer.h.

Referenced by AddHit(), and Init().

mapper PndEmcApdHitProducer::emcZ
private

Definition at line 65 of file PndEmcApdHitProducer.h.

Referenced by AddHit(), and Init().

TClonesArray* PndEmcApdHitProducer::fDigiArray
private

Output array of PndEmcApdHit

Definition at line 56 of file PndEmcApdHitProducer.h.

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

PndEmcStructure* PndEmcApdHitProducer::fEmcStr
private

Definition at line 67 of file PndEmcApdHitProducer.h.

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

Int_t PndEmcApdHitProducer::fMapVersion
private

Geo file to use

Definition at line 61 of file PndEmcApdHitProducer.h.

TClonesArray* PndEmcApdHitProducer::fPointArray
private

Input array of PndEmcApdPoints

Definition at line 53 of file PndEmcApdHitProducer.h.

Referenced by Exec(), and Init().

TObjArray* PndEmcApdHitProducer::fVolumeArray
private

Definition at line 58 of file PndEmcApdHitProducer.h.


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