18 #include "FairRootManager.h"
19 #include "FairRunAna.h"
20 #include "FairRuntimeDb.h"
21 #include "FairDetector.h"
23 #include "FairRuntimeDb.h"
25 #include "TClonesArray.h"
27 #include "TGeoVolume.h"
28 #include "TGeoMatrix.h"
40 PndPersistencyTask(
"Ideal EMC APD hit Producer"), fPointArray(0), fDigiArray(0), fVolumeArray(new TObjArray),
41 fMapVersion(0), emcX(), emcY(), emcZ(), fEmcStr()
55 cout <<
" INITIALIZATION *********************" << endl;
62 FairRootManager* ioman = FairRootManager::Instance();
64 cout <<
"-E- PndEmcApdHitProducer::Init: "
65 <<
"RootManager not instantiated!" << endl;
70 fPointArray = (TClonesArray*) ioman->GetObject(
"EmcApdPoint");
72 cout <<
"-W- PndEmcApdHitProducer::Init: "
73 <<
"No EmcApdPoint array!" << endl;
95 cout <<
"-I- PndEmcApdHitProducer: Intialization successfull" << endl;
107 if ( !
fDigiArray ) Fatal(
"Exec",
"No DigiArray");
112 map<Int_t, Float_t> fTrackEnergy;
113 map<Int_t, Float_t> fTrackTime;
114 map<Int_t, TArrayI> fPointIndex;
116 fTrackEnergy.clear();
121 map<Int_t, Float_t>::const_iterator
p;
123 std::vector<PndEmcApdPoint*> fPointList;
129 for (Int_t iPoint=0; iPoint<nPoints; iPoint++)
132 fTrackEnergy[point->GetDetectorID()] += point->GetEnergyLoss();
135 fPointIndex[point->GetDetectorID()].Set(fPointIndex[point->GetDetectorID()].GetSize()+1);
136 fPointIndex[point->GetDetectorID()].AddAt(point->GetTrackID(),fPointIndex[point->GetDetectorID()].GetSize()-1);
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);
161 Int_t size = clref.GetEntriesFast();
162 return new(clref[size])
PndEmcApdHit(trackID, detID, energy, time,
emcX[detID],
emcY[detID],
emcZ[detID], npoint, pointIndex);
virtual InitStatus Init()
const mapper & GetEmcY() const
virtual void Exec(Option_t *opt)
PndEmcStructure * fEmcStr
TClonesArray * fDigiArray
static PndEmcStructure * Instance()
PndEmcApdHit * AddHit(Int_t trackID, Int_t detID, Float_t energy, Float_t time, Int_t npoint, Int_t pointIndex[10])
const mapper & GetEmcZ() const
TClonesArray * fPointArray
const mapper & GetEmcX() const