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

creates PndEmcHits from PndEmcPoints More...

#include <PndEmcHitProducer.h>

Inheritance diagram for PndEmcHitProducer:
PndPersistencyTask

Public Types

typedef std::map< Int_t, Float_t > mapper
 

Public Member Functions

 PndEmcHitProducer ()
 
 PndEmcHitProducer (Bool_t val)
 
 ~PndEmcHitProducer ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 
PndEmcHitAddHit (Int_t trackID, Int_t detID, Float_t energy, Float_t time, std::vector< Int_t > &mctruth, FairMultiLinkedData entering, FairMultiLinkedData exiting)
 
void SetStorageOfData (Bool_t val)
 
void SetNonuniformityFile (const char *filename)
 
void SetDayOne (bool d=true)
 
void FinishTask ()
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

Private Member Functions

virtual void SetParContainers ()
 
void cleansortmclist (std::vector< Int_t > &newlist, TClonesArray *mcTrackArray)
 
 PndEmcHitProducer (const PndEmcHitProducer &L)
 
PndEmcHitProduceroperator= (const PndEmcHitProducer &)
 
 ClassDef (PndEmcHitProducer, 1)
 
bool AcceptDayOne (PndEmcPoint *p)
 

Private Attributes

Int_t fUse_nonuniformity
 
TString fNonuniformityFile
 
TClonesArray * fPointArray
 
TClonesArray * fMCTrackArray
 
TClonesArray * fHitArray
 
TObjArray * fVolumeArray
 
Int_t fMapVersion
 
Float_t fEnergyThreshold
 
mapper emcX
 
mapper emcY
 
mapper emcZ
 
PndEmcStructurefEmcStr
 
PndEmcMapperfMapper
 
PndEmcDigiParfDigiPar
 
PndEmcGeoParfGeoPar
 
PndEmcDigiNonuniformityParfNonuniformityPar
 
Bool_t fStoreHits
 
map< Int_t, Float_t > fTrackEnergy
 
map< Int_t, Float_t > fTrackTime
 
map< Int_t, std::vector< Int_t > > fTrackMcTruth
 
map< Int_t, std::vector< Int_t > > fPointMatch
 
map< Int_t, FairMultiLinkedData > fTrackEntering
 
map< Int_t, FairMultiLinkedData > fTrackExiting
 
bool fDayOne
 

Detailed Description

creates PndEmcHits from PndEmcPoints

Definition at line 37 of file PndEmcHitProducer.h.

Member Typedef Documentation

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

Definition at line 41 of file PndEmcHitProducer.h.

Constructor & Destructor Documentation

PndEmcHitProducer::PndEmcHitProducer ( )

Default constructor

Definition at line 44 of file PndEmcHitProducer.cxx.

References fNonuniformityFile, and PndPersistencyTask::SetPersistency().

44  :
45  PndPersistencyTask("Ideal EMC hit Producer"),
47 {
48  fNonuniformityFile=gSystem->Getenv("VMCWORKDIR");
49  fNonuniformityFile+="/input/EmcDigiNoniformityPars.root";
50  SetPersistency(kTRUE);
51 }
PndEmcDigiPar * fDigiPar
PndEmcStructure * fEmcStr
TClonesArray * fMCTrackArray
void SetPersistency(Bool_t val=kTRUE)
TClonesArray * fHitArray
TObjArray * fVolumeArray
TClonesArray * fPointArray
PndEmcDigiNonuniformityPar * fNonuniformityPar
PndEmcGeoPar * fGeoPar
PndEmcMapper * fMapper
PndEmcHitProducer::PndEmcHitProducer ( Bool_t  val)

Definition at line 54 of file PndEmcHitProducer.cxx.

References fNonuniformityFile, and PndPersistencyTask::SetPersistency().

54  :
55  PndPersistencyTask("Ideal EMC hit Producer"),
57 {
58  fNonuniformityFile=gSystem->Getenv("VMCWORKDIR");
59  fNonuniformityFile+="/input/EmcDigiNoniformityPars.root";
61 }
PndEmcDigiPar * fDigiPar
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
PndEmcStructure * fEmcStr
TClonesArray * fMCTrackArray
void SetPersistency(Bool_t val=kTRUE)
TClonesArray * fHitArray
TObjArray * fVolumeArray
TClonesArray * fPointArray
PndEmcDigiNonuniformityPar * fNonuniformityPar
PndEmcGeoPar * fGeoPar
PndEmcMapper * fMapper
PndEmcHitProducer::~PndEmcHitProducer ( )

Destructor

Definition at line 64 of file PndEmcHitProducer.cxx.

References fEmcStr.

64 { delete fEmcStr;}
PndEmcStructure * fEmcStr
PndEmcHitProducer::PndEmcHitProducer ( const PndEmcHitProducer L)
private

Member Function Documentation

bool PndEmcHitProducer::AcceptDayOne ( PndEmcPoint p)
private

Definition at line 424 of file PndEmcHitProducer.cxx.

References fDayOne, PndEmcPoint::GetPhi(), and phi.

Referenced by Exec().

425 {
426  if(!fDayOne) return true;
427  if(p->GetDetectorID()>250e6) return true; // afaik this is convention for the barrel
428  float phi=p->GetPhi();
429  if(abs(phi-90)<22.5) return false;
430  if(abs(phi-270)<22.5) return false;
431  if(abs(phi+90)<22.5) return false;
432  return true;
433 }
Double_t GetPhi() const
Definition: PndEmcPoint.h:56
PndEmcHit * PndEmcHitProducer::AddHit ( Int_t  trackID,
Int_t  detID,
Float_t  energy,
Float_t  time,
std::vector< Int_t > &  mctruth,
FairMultiLinkedData  entering,
FairMultiLinkedData  exiting 
)

Definition at line 389 of file PndEmcHitProducer.cxx.

References emcX, emcY, emcZ, fHitArray, and hit.

Referenced by Exec().

391 {
392  // It fills the PndEmcHit category
393 
394  //cout << "PndEmcHitProducer: track " << trackID << " evt " << eventID
395  //<< " sec " << sec << " plane " << pla << " strip " << strip << "box
396  //" << box << " tube " << tub << endl;
397  TClonesArray& clref = *fHitArray;
398  Int_t size = clref.GetEntriesFast();
399  PndEmcHit* hit = new(clref[size]) PndEmcHit(trackID, detID, energy, time, emcX[detID],
400  emcY[detID], emcZ[detID], mctruth, entering, exiting);
401  //hit->Print();
402  return hit;
403 }
TClonesArray * fHitArray
represents the deposited energy of one emc crystal from simulation
Definition: PndEmcHit.h:26
PndSdsMCPoint * hit
Definition: anasim.C:70
Double_t energy
Definition: plot_dirc.C:15
PndEmcHitProducer::ClassDef ( PndEmcHitProducer  ,
 
)
private
void PndEmcHitProducer::cleansortmclist ( std::vector< Int_t > &  newlist,
TClonesArray *  mcTrackArray 
)
private

Definition at line 169 of file PndEmcHitProducer.cxx.

References PndMCTrack::GetMotherID(), PndMCTrack::GetStartVertex(), gGeoManager, pt(), and TString.

Referenced by Exec().

170 {
171  std::vector <Int_t> tmplist;
172  std::vector <Int_t> tmplist2;
173  // Sort list...
174  std::sort( newlist.begin(), newlist.end());
175  // and copy every id only once (even so it might be in the list several times)
176  std::unique_copy( newlist.begin(), newlist.end(), std::back_inserter( tmplist ) );
177 
178  // Now check if mother or (grand)^x-mother are already in the list
179  // (which means i am a secondary)... if so, remove myself
180  for(Int_t j=tmplist.size()-1; j>=0; j--){
181  bool flag = false;
182  PndMCTrack *pt;
183  Int_t id = tmplist[j];
184  // if -1 index put it in the list and continue
185  if(id < 0) {
186  tmplist2.push_back(id);
187  continue;
188  }
189  while(!flag){
190  pt=((PndMCTrack*)mcTrackArray->At(id));
191  // If the particle is primary store it and stop
192  if(pt->GetMotherID()<0) {
193  tmplist2.push_back(id);
194  break;
195  }
196  // Stop when it finds the first MCTrack not produced in emc
197  TString node = gGeoManager->FindNode(pt->GetStartVertex().X(),pt->GetStartVertex().Y(),pt->GetStartVertex().Z())->GetName();
198  if ( !(node.BeginsWith("emc") || node.BeginsWith("CrystalVol") || node.BeginsWith("Fsc") ) ) {
199  tmplist2.push_back(id);
200  break;
201  }
202  // not exactly clear this part of the code, it needs to be checked (SS, 18/03/2015)
203  id = pt->GetMotherID();
204  for(Int_t k=j-1; k>=0; k--){
205  if(tmplist[k]==id){
206  tmplist.erase(tmplist.begin()+j);
207  flag=true;
208  break;
209  }
210  }
211  }
212  }
213  newlist.clear();
214  std::unique_copy( tmplist2.begin(), tmplist2.end(), std::back_inserter( newlist) );
215 }
TGeoManager * gGeoManager
TString pt(TString pts, TString exts="px py pz")
Definition: invexp.C:133
TVector3 GetStartVertex() const
Definition: PndMCTrack.h:76
Int_t GetMotherID() const
Definition: PndMCTrack.h:74
void PndEmcHitProducer::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 218 of file PndEmcHitProducer.cxx.

References AcceptDayOne(), AddHit(), c, cleansortmclist(), Double_t, fEmcStr, fEnergyThreshold, fHitArray, fMapper, fMCTrackArray, fNonuniformityPar, fPointArray, fPointMatch, PndEmcXtal::frontCentre(), fTrackEnergy, fTrackEntering, fTrackExiting, fTrackMcTruth, fTrackTime, fUse_nonuniformity, fVerbose, PndEmcPoint::GetEntering(), PndEmcPoint::GetExiting(), PndEmcPoint::GetModule(), PndEmcDigiNonuniformityPar::GetNonuniformityParameters(), PndEmcMapper::GetTCI(), PndEmcStructure::GetTciXtalMap(), HowManyHitsAboveThreshold, HowManyHitsAll, HowManyPoints, idx, max(), PndEmcXtal::normalToFrontFace(), p, point, printf(), push_back(), and zpos.

219 {
220  if (fVerbose>1) cout << " -I- PndEmcHitProducer POINT EXECUTION *********************" << endl;
221  // Reset output array
222  if (! fHitArray ) Fatal("Exec", "No DigiArray");
223 
224  fHitArray->Delete();
225 
226  // Declare some variables
227  //PndEmcPoint* point = NULL;
228  Int_t DetId;
229 
230  fTrackEnergy.clear();
231  fTrackTime.clear();
232  fTrackMcTruth.clear();
233  fPointMatch.clear();
234  fTrackEntering.clear();
235  fTrackExiting.clear();
236 
237  map<Int_t, Float_t>::const_iterator p;
238 
239  std::vector<PndEmcPoint*> fPointList;// to pass to EmcHit
240  const PndEmcTciXtalMap &XtalMap = fEmcStr->GetTciXtalMap();
241  TVector3 frontvec;
242  TVector3 normvec;
243  TVector3 pointvec;
244  TVector3 distvec;
245  Double_t zpos;
246  Double_t energyscalefactor=1.0;
247  Double_t c[3];
248  PndEmcXtal *tmpXtal;
249  PndEmcTwoCoordIndex *tmpTCI;
250  // Loop over EmcPoints
251  Int_t nPoints = fPointArray->GetEntriesFast();
252 
253  Double_t point_time = 0.00;
254  //------- init containers ---
255 
256  for (Int_t iPoint = 0; iPoint < nPoints; iPoint++){
257  PndEmcPoint* point = (PndEmcPoint*) fPointArray->At(iPoint);
258  if ( ! AcceptDayOne(point) ) continue;
259  fTrackEnergy[point->GetDetectorID()] = 0.00;
260  fTrackTime [point->GetDetectorID()] = std::numeric_limits<float>::max();
261  }
262 
263  //----------------------------
264 
265  //Int_t Counter[3] = {0};
266  HowManyPoints += nPoints;
267 
268  for (Int_t iPoint=0; iPoint<nPoints; iPoint++)
269  {
270  PndEmcPoint* point = (PndEmcPoint*) fPointArray->At(iPoint);
271  if ( ! AcceptDayOne(point) ) continue;
272  DetId = point->GetDetectorID();
273 
274  if (point->GetEntering()){
275  fTrackEntering[DetId].AddLinks(point->GetLinksWithType(FairRootManager::Instance()->GetBranchId("MCTrack")));
276  }
277  if (point->GetExiting()){
278  fTrackExiting[DetId].AddLinks(point->GetLinksWithType(FairRootManager::Instance()->GetBranchId("MCTrack")));
279  }
280  if(point->GetEnergyLoss() == 0 ) continue;
281  if(point->GetModule() == 10 )
282  {
283  cout << " -I- PndEmcHitProducer::Exec" << "\t" << "Skipping Module 10 (FscFiber)" << endl;
284  continue;
285  }
286  //if(point->GetTrackID() < 0)
287  // std::cout<<"negative track id #"<<point->GetTrackID()<<std::endl;
288 
289  //std::cout<<"point belongs to track #"<<point->GetTrackID()<<std::endl;
290  //if(point->GetTrackID() == 0) ++Counter[0];
291  //if(point->GetTrackID() == 1) ++Counter[1];
292  //if(point->GetTrackID() == 2) ++Counter[2];
293 
294  if(fUse_nonuniformity !=0 ){
295  //light output is z-dependent, so calculate z
296 
297  tmpTCI = fMapper->GetTCI(DetId);
298  if(tmpTCI == NULL){
299  printf("no TCI found for DetectorID %d\n",DetId);
300  continue;
301  }
302  tmpXtal =XtalMap.find(tmpTCI)->second;
303  point->Position(pointvec);
304  frontvec = tmpXtal->frontCentre();
305  normvec = tmpXtal->normalToFrontFace();
306  distvec = pointvec-frontvec;
307  zpos = distvec.Dot(normvec);
309  energyscalefactor=c[0]+zpos*(c[1]+zpos*c[2]);
310  fTrackEnergy[DetId] += point->GetEnergyLoss() * energyscalefactor;
311  fPointMatch[DetId].push_back(iPoint);
312  // printf("point with detID %d has z Position %f and energyloss %f scaled with %f\n",DetId,zpos, point->GetEnergyLoss(),energyscalefactor);
313  // printf("front is at x: %f y: %f z: %f\n", frontvec.X(),frontvec.Y(),frontvec.Z());
314  } else {
315  fTrackEnergy[DetId] += point->GetEnergyLoss();
316  fPointMatch[DetId].push_back(iPoint);
317  // printf("point with detID %d has z Position %f and energyloss %f not scaled\n",DetId,zpos, point->GetEnergyLoss());
318  }
319  point_time=point->GetTime();
320 
321  if (point_time < fTrackTime[point->GetDetectorID()]){
322  fTrackTime[point->GetDetectorID()] = point_time;
323  }
324 
325  // Check and save MC truth information
326  // Eloss==0 tracks are only stored in point, if track is entering detector from outside
327  // and thats what we are interested in...
328  //std::cout<<"track id #"<<point->GetTrackID()<<", Energyloss #"<<point->GetEnergyLoss()<<endl;
329  if(point->GetEnergyLoss() >0)
330  (fTrackMcTruth[point->GetDetectorID()]).push_back(point->GetTrackID());
331  //if(point->GetEnergyLoss() == 0 ){
332  // cout << "ELoss== 0 : " <<point->GetEnergyLoss()<<", ID "<<
333  // point->GetTrackID()<<","<<point->GetDetectorID()<<","<<point->GetXPad()<<","<<point->GetYPad()<<endl;
334  //}else{
335  // cout << "ELoss>0 : " <<point->GetEnergyLoss()<<", ID "<<
336  // point->GetTrackID()<<","<<point->GetDetectorID()<<","<<point->GetXPad()<<","<<point->GetYPad()<<endl;
337  //}
338  }
339 
340  // Loop over EmcPoint
341 
342  // Loop to register EmcHit
343  Int_t idx = 0;
344  for( p = fTrackEnergy.begin(); p != fTrackEnergy.end(); ++p){
345  ++HowManyHitsAll;
346  ++idx;
347  if ((*p).second > fEnergyThreshold){
349  // Check and save MC truth information B.S.
350  // remove MC Truth particles which are not needed (eg grand^x-daugherts)
351  if( fMCTrackArray){
352  std::vector<Int_t>& plist = fTrackMcTruth[(*p).first];
354  //std::cout<<"The "<<(idx)<<" hit produced by track #";
355  //for(Int_t ip=0;ip<plist.size();++ip){
356  // cout<<plist[ip]<<", ";
357  //}
358  //cout<<endl;
359  }
360  //std::vector<Int_t>& track = fTrackMcTruth[(*p).first];
361  //std::cout<<track.size()<<" tracks contributes energy to this hit, ";
362  //for(size_t i=0;i<track.size();++i){
363  // if(i < track.size() - 1){
364  // std::cout<<track[i]<<", ";
365  // }else{
366  // std::cout<<track[i];
367  // }
368  //}
369  //std::cout<<std::endl;
370  AddHit(1, (*p).first, (*p).second, fTrackTime[(*p).first], fTrackMcTruth[(*p).first], fTrackEntering[(*p).first], fTrackExiting[(*p).first]);
371  //myHit->AddLinks(FairMultiLinkedData("EmcPoint", fPointMatch[p->first]));
372  //myHit->AddLinks(FairMultiLinkedData("MCTrack", fTrackMcTruth[(*p).first));
373  }
374  }
375  //check
376  //Int_t nTrack = fMCTrackArray->GetEntriesFast();
377  //for(Int_t itrack = 0; itrack < nTrack; ++itrack){
378  // PndMCTrack* pt1 =((PndMCTrack*)fMCTrackArray->At(itrack));
379  // if(pt1->IsGeneratorCreated()){
380  // pt1->Print(itrack);
381  // }
382  //}
383 
384 
385 }
represents a mc hit in an emc crystal
Definition: PndEmcPoint.h:19
Double_t p
Definition: anasim.C:58
int fVerbose
Definition: poormantracks.C:24
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
Short_t GetModule() const
Definition: PndEmcPoint.h:60
map< Int_t, FairMultiLinkedData > fTrackExiting
PndEmcStructure * fEmcStr
labels push_back("electron")
TClonesArray * fMCTrackArray
const TVector3 & frontCentre() const
Definition: PndEmcXtal.cxx:145
represents coordinates of one crystal
Definition: PndEmcXtal.h:36
static Int_t HowManyPoints
stores crystal index coordinates (x,y) or (theta,phi)
PndEmcTwoCoordIndex * GetTCI(Int_t DetectorId)
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:26
TClonesArray * fHitArray
map< Int_t, Float_t > fTrackEnergy
Bool_t GetExiting() const
Definition: PndEmcPoint.h:65
int idx[MAX]
Definition: autocutx.C:38
const TVector3 & normalToFrontFace() const
Definition: PndEmcXtal.cxx:151
Double_t
static Int_t HowManyHitsAll
const Double_t zpos
static Int_t HowManyHitsAboveThreshold
const PndEmcTciXtalMap & GetTciXtalMap() const
map< Int_t, FairMultiLinkedData > fTrackEntering
void cleansortmclist(std::vector< Int_t > &newlist, TClonesArray *mcTrackArray)
bool AcceptDayOne(PndEmcPoint *p)
map< Int_t, std::vector< Int_t > > fTrackMcTruth
TClonesArray * fPointArray
Bool_t GetEntering() const
Definition: PndEmcPoint.h:64
PndEmcHit * AddHit(Int_t trackID, Int_t detID, Float_t energy, Float_t time, std::vector< Int_t > &mctruth, FairMultiLinkedData entering, FairMultiLinkedData exiting)
PndEmcDigiNonuniformityPar * fNonuniformityPar
std::map< PndEmcTwoCoordIndex *, PndEmcXtal * > PndEmcTciXtalMap
map< Int_t, Float_t > fTrackTime
map< Int_t, std::vector< Int_t > > fPointMatch
PndEmcMapper * fMapper
void GetNonuniformityParameters(Int_t DetId, Double_t *pars)
PndSdsMCPoint * point
Definition: anaLmdCluster.C:72
void PndEmcHitProducer::FinishTask ( )

Definition at line 412 of file PndEmcHitProducer.cxx.

References fDayOne, fEnergyThreshold, HowManyHitsAboveThreshold, HowManyHitsAll, and HowManyPoints.

413 {
414  std::cout<<"========================================================="<<std::endl;
415  std::cout<<"PndEmcHitProducer::FinishTask"<<std::endl;
416  std::cout<<"*********************************************************"<<std::endl;
417  if(fDayOne) std::cout<<" DAY 1 Setup active, only 12/16 Slices available "<<std::endl;
418  std::cout<<"Read points # "<<HowManyPoints<<std::endl;
419  std::cout<<"Produc hits# "<<HowManyHitsAll<<", threshold# "<<fEnergyThreshold<<std::endl;
420  std::cout<<"Hits above threshhod#"<<HowManyHitsAboveThreshold<<std::endl;
421  std::cout<<"*********************************************************"<<std::endl;
422 }
static Int_t HowManyPoints
static Int_t HowManyHitsAll
static Int_t HowManyHitsAboveThreshold
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(), Init(), PndRecoMultiKalmanTask2::Init(), PndDrcHitProducerReal::Init(), PndDskFLGHitProducerIdeal::Init(), PndEmcTmpWaveformToDigi::Init(), PndDrcDigiTask::Init(), PndEmcWaveformToDigi::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 PndEmcHitProducer::Init ( )
virtual

Virtual method Init

Definition at line 69 of file PndEmcHitProducer.cxx.

References emcX, emcY, emcZ, fDigiPar, fEmcStr, fEnergyThreshold, fGeoPar, fHitArray, fMapper, fMCTrackArray, fNonuniformityFile, fNonuniformityPar, fPointArray, fUse_nonuniformity, PndEmcStructure::GetEmcX(), PndEmcStructure::GetEmcY(), PndEmcStructure::GetEmcZ(), PndEmcDigiPar::GetEnergyHitThreshold(), PndPersistencyTask::GetPersistency(), PndEmcDigiPar::GetUse_nonuniformity(), PndEmcGeoPar::InitEmcMapper(), PndEmcMapper::Instance(), PndEmcStructure::Instance(), printf(), and PndEmcDigiNonuniformityPar::SetNonuniParObject().

69  {
70 
71  cout << " -I- PndEmcHitProducer INITIALIZATION *********************" << endl;
72 
73  //FairDetector::Initialize();
74  //FairRun* sim = FairRun::Instance();
75  //FairRuntimeDb* rtdb=sim->GetRuntimeDb();
76 
77  // Get RootManager
78  FairRootManager* ioman = FairRootManager::Instance();
79  if (! ioman ){
80  cout << "-E- PndEmcHitProducer::Init: "
81  << "RootManager not instantiated!" << endl;
82  return kFATAL;
83  }
84 
85  // Get input array
86  fPointArray = (TClonesArray*) ioman->GetObject("EmcPoint");
87  if (! fPointArray ){
88  cout << "-W- PndEmcHitProducer::Init: "
89  << "No EmcPoint array!" << endl;
90  return kERROR;
91  }
92 
93  // Get input array
94  fMCTrackArray = (TClonesArray*) ioman->GetObject("MCTrack");
95  if (! fMCTrackArray ){
96  cout << "-W- PndEmcMakeCluster::Init: "
97  << "No MCTrack array! Needed for MC Truth" << endl;
98  //return kERROR;
99  }
100 
101  // Create and register output array
102  fHitArray = new TClonesArray("PndEmcHit");
103 
104  ioman->Register("EmcHit","Emc",fHitArray, GetPersistency());
105 
109 
110  emcX=fEmcStr->GetEmcX();
111  emcY=fEmcStr->GetEmcY();
112  emcZ=fEmcStr->GetEmcZ();;
113 
116 
117  if(fUse_nonuniformity){
118  cout << "-I- PndEmcHitProducer: Using nonuniform lightoutput" << endl;
119  }
120  if(fUse_nonuniformity && fNonuniformityFile.Length()>0){
121  TFile *nonuniformityfile = new TFile(fNonuniformityFile);
122  if(nonuniformityfile==NULL){
123  cout << "-E- PndEmcHitProducer: Could not open file " << fNonuniformityFile.Data() << " for Nonuniformity Information" << endl;
124  } else {
125  PndEmcDigiNonuniParObject *parObject;
126  nonuniformityfile->GetObject("PndEmcDigiNonuniParObject",parObject);
127  if(parObject == NULL){
128  cout << "-E- PndEmcHitProducer: Could not get Nonuniformity information from file " << fNonuniformityFile.Data() << endl;
129  } else {
131  }
132  }
133  }
134 
135 
136  printf("HitProducer has EnergyHitThreshold of %f GeV and Use_nonuniformity %i\n", fEnergyThreshold, fUse_nonuniformity);
137  cout << "-I- PndEmcHitProducer: Intialization successfull" << endl;
138 
139  return kSUCCESS;
140 }
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
PndEmcDigiPar * fDigiPar
PndEmcStructure * fEmcStr
TClonesArray * fMCTrackArray
Int_t GetUse_nonuniformity()
Definition: PndEmcDigiPar.h:51
TClonesArray * fHitArray
void InitEmcMapper()
const mapper & GetEmcY() const
Double_t GetEnergyHitThreshold()
Definition: PndEmcDigiPar.h:15
TClonesArray * fPointArray
PndEmcDigiNonuniformityPar * fNonuniformityPar
PndEmcGeoPar * fGeoPar
void SetNonuniParObject(PndEmcDigiNonuniParObject *ParObject)
static PndEmcStructure * Instance()
PndEmcMapper * fMapper
static PndEmcMapper * Instance()
const mapper & GetEmcZ() const
const mapper & GetEmcX() const
PndEmcHitProducer& PndEmcHitProducer::operator= ( const PndEmcHitProducer )
inlineprivate

Definition at line 106 of file PndEmcHitProducer.h.

106 {return *this;}
void PndEmcHitProducer::SetDayOne ( bool  d = true)
inline

Definition at line 67 of file PndEmcHitProducer.h.

References d, and fDayOne.

Referenced by PndMasterSimTask::PndMasterSimTask().

67 {fDayOne=d;};
TObjArray * d
void PndEmcHitProducer::SetNonuniformityFile ( const char *  filename)
inline

Definition at line 66 of file PndEmcHitProducer.h.

References filename, and fNonuniformityFile.

const string filename
void PndEmcHitProducer::SetParContainers ( )
privatevirtual

Get parameter containers

Definition at line 142 of file PndEmcHitProducer.cxx.

References fDigiPar, fGeoPar, fNonuniformityPar, and run.

142  {
143 
144  // Get run and runtime database
145  FairRun* run = FairRun::Instance();
146  if (! run ) Fatal("SetParContainers", "No analysis run");
147 
148  FairRuntimeDb* db = run->GetRuntimeDb();
149  if (! db ) Fatal("SetParContainers", "No runtime database");
150 
151  // Get Emc geometry parameter container
152  fGeoPar = (PndEmcGeoPar*) db->getContainer("PndEmcGeoPar");
153 
154  // Get Emc digitisation parameter container
155  fDigiPar = (PndEmcDigiPar*) db->getContainer("PndEmcDigiPar");
156 
157  fNonuniformityPar = (PndEmcDigiNonuniformityPar*) db->getContainer("PndEmcDigiNonuniformityPar");
158 
159  fDigiPar->setChanged();
160  fDigiPar->setInputVersion(run->GetRunId(),1);
161 
162  fNonuniformityPar->setChanged();
163  fNonuniformityPar->setInputVersion(run->GetRunId(),1);
164 }
Int_t run
Definition: autocutx.C:47
PndEmcDigiPar * fDigiPar
parameter set of Emc digitisation
Definition: PndEmcDigiPar.h:12
PndEmcDigiNonuniformityPar * fNonuniformityPar
PndEmcGeoPar * fGeoPar
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(), 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(), 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(), 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
void PndEmcHitProducer::SetStorageOfData ( Bool_t  val)

Definition at line 406 of file PndEmcHitProducer.cxx.

References fStoreHits, and val.

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

407 {
408  fStoreHits=val;
409  return;
410 }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11

Member Data Documentation

mapper PndEmcHitProducer::emcX
private

Definition at line 87 of file PndEmcHitProducer.h.

Referenced by AddHit(), and Init().

mapper PndEmcHitProducer::emcY
private

Definition at line 88 of file PndEmcHitProducer.h.

Referenced by AddHit(), and Init().

mapper PndEmcHitProducer::emcZ
private

Definition at line 89 of file PndEmcHitProducer.h.

Referenced by AddHit(), and Init().

bool PndEmcHitProducer::fDayOne
private

Definition at line 117 of file PndEmcHitProducer.h.

Referenced by AcceptDayOne(), FinishTask(), and SetDayOne().

PndEmcDigiPar* PndEmcHitProducer::fDigiPar
private

Definition at line 94 of file PndEmcHitProducer.h.

Referenced by Init(), and SetParContainers().

PndEmcStructure* PndEmcHitProducer::fEmcStr
private

Definition at line 91 of file PndEmcHitProducer.h.

Referenced by Exec(), Init(), and ~PndEmcHitProducer().

Float_t PndEmcHitProducer::fEnergyThreshold
private

Definition at line 85 of file PndEmcHitProducer.h.

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

PndEmcGeoPar* PndEmcHitProducer::fGeoPar
private

Digitisation parameter container

Definition at line 95 of file PndEmcHitProducer.h.

Referenced by Init(), and SetParContainers().

TClonesArray* PndEmcHitProducer::fHitArray
private

Output array of PndEmcHit

Definition at line 78 of file PndEmcHitProducer.h.

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

PndEmcMapper* PndEmcHitProducer::fMapper
private

Definition at line 92 of file PndEmcHitProducer.h.

Referenced by Exec(), and Init().

Int_t PndEmcHitProducer::fMapVersion
private

Geo file to use

Definition at line 84 of file PndEmcHitProducer.h.

TClonesArray* PndEmcHitProducer::fMCTrackArray
private

Definition at line 75 of file PndEmcHitProducer.h.

Referenced by Exec(), and Init().

TString PndEmcHitProducer::fNonuniformityFile
private

Definition at line 72 of file PndEmcHitProducer.h.

Referenced by Init(), PndEmcHitProducer(), and SetNonuniformityFile().

PndEmcDigiNonuniformityPar* PndEmcHitProducer::fNonuniformityPar
private

Geometry parameter container

Definition at line 96 of file PndEmcHitProducer.h.

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

TClonesArray* PndEmcHitProducer::fPointArray
private

Input array of PndEmcPoints

Definition at line 74 of file PndEmcHitProducer.h.

Referenced by Exec(), and Init().

map<Int_t, std::vector <Int_t> > PndEmcHitProducer::fPointMatch
private

Definition at line 113 of file PndEmcHitProducer.h.

Referenced by Exec().

Bool_t PndEmcHitProducer::fStoreHits
private

Definition at line 101 of file PndEmcHitProducer.h.

Referenced by SetStorageOfData().

map<Int_t, Float_t> PndEmcHitProducer::fTrackEnergy
private

Definition at line 110 of file PndEmcHitProducer.h.

Referenced by Exec().

map<Int_t, FairMultiLinkedData> PndEmcHitProducer::fTrackEntering
private

Definition at line 114 of file PndEmcHitProducer.h.

Referenced by Exec().

map<Int_t, FairMultiLinkedData> PndEmcHitProducer::fTrackExiting
private

Definition at line 115 of file PndEmcHitProducer.h.

Referenced by Exec().

map<Int_t, std::vector <Int_t> > PndEmcHitProducer::fTrackMcTruth
private

Definition at line 112 of file PndEmcHitProducer.h.

Referenced by Exec().

map<Int_t, Float_t> PndEmcHitProducer::fTrackTime
private

Definition at line 111 of file PndEmcHitProducer.h.

Referenced by Exec().

Int_t PndEmcHitProducer::fUse_nonuniformity
private

Definition at line 71 of file PndEmcHitProducer.h.

Referenced by Exec(), and Init().

TObjArray* PndEmcHitProducer::fVolumeArray
private

Definition at line 81 of file PndEmcHitProducer.h.


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