PandaRoot
PndEmcMakeCluster.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------
2 // File and Version Information:
3 // $Id: $
4 // Software developed for the PANDA Detector at GSI.
5 // Author List:
6 // Jan Zhong
7 // Marcel Tiemens
8 // Áron Kripkó
9 //---------------------------------------------------------------------
10 //#pragma once
11 #ifndef PNDEMCMAKECLUSTER_H
12 #define PNDEMCMAKECLUSTER_H
13 
14 #include <PndPersistencyTask.h>
15 #include <vector>
16 
17 #include "FairTSBufferFunctional.h"
18 #include "TStopwatch.h"
19 #include "TCanvas.h"
20 #include "TH1.h"
21 
22 class TClonesArray;
23 class TObjectArray;
24 class PndEmcDigi;
25 class PndEmcCluster;
26 class PndEmcGeoPar;
27 class PndEmcDigiPar;
28 class PndEmcRecoPar;
29 class BinaryFunctor;
30 
40  public:
41  // Constructors
42  PndEmcMakeCluster(Int_t verbose = 0, Bool_t storeclusters = kTRUE);
43  // Destructor
44  virtual ~PndEmcMakeCluster();
45 
46  virtual InitStatus Init();
47  virtual void Exec(Option_t *opt);
48 
50  virtual void ExecuteTasks(Option_t *option)
51  {
52  PndPersistencyTask::ExecuteTasks(option);
54  }
55 
56  void SetStorageOfData(Bool_t val);
57 
63  void StoreClusterBaseDigis(Bool_t val = kTRUE) { fStoreClusterBase = val; }
64 
65  void SetClusterActiveTime(Double_t time) { fClusterActiveTime = time; }
66 
68  void SetClusterMinimumEnergy(Double_t minE) { fClusterEnergyCut = minE; }
69  void EnableRemovalOfLowEnergyClusters(Bool_t enable) { fRemoveLowEclus = enable; }
70  void EnableBetterNeutralReconstruction(Bool_t enable) { fMerge = enable; }
71 
72  protected:
74  virtual void SetParContainers();
75  virtual void FinishClusters();
76  virtual void RemoveLowEnergyClusters();
77 
78  private:
79  void FinishCluster(PndEmcCluster *tmpcluster);
80 
81  void cleansortmclist(std::vector<Int_t> &newlist, TClonesArray *mcTrackArray);
82  // don't allow copying (-Weffc++)
83 
85  TClonesArray *fDigiArray;
86 
88  TClonesArray *fHitArray;
89  TClonesArray *fMCTrackArray;
90 
92  TClonesArray *fClusterArray;
93 
94  PndEmcGeoPar *fGeoPar;
95  PndEmcDigiPar *fDigiPar;
96  PndEmcRecoPar *fRecoPar;
99  Int_t fVerbose;
100 
101  Double_t fDigiEnergyTresholdBarrel;
102  Double_t fDigiEnergyTresholdFWD;
103  Double_t fDigiEnergyTresholdBWD;
104  Double_t fDigiEnergyTresholdShashlyk;
105  Double_t fClusterEnergyCut;
107  Double_t fMaxECut;
108 
109  Double_t fTimebunchCutTime; // Defines how long clusters are kept open in timebased reconstruction
110  Double_t fClusterActiveTime;
111  BinaryFunctor *fDigiFunctor;
112 
113  Int_t fNrOfEvents;
114  Int_t fNrOfDigis;
115  Int_t nOnlProg;
116  Int_t digiCounter;
117  Int_t evtCounter;
118 
119  std::vector<Double_t> fClusterPosParam;
120 
121  Bool_t fStoreClusters;
122  Bool_t fStoreClusterBase; // re-store digis in case of a timebased run
123  Bool_t fMerge;
124  Bool_t fRemoveLowEclus;
125 
126  TH1I *hClusMultiplicity;
127  TH1I *hEventsPerCluster;
128  TH1D *hTimeDifference;
129 
130  TStopwatch fTimer;
131 
132  ClassDef(PndEmcMakeCluster, 3)
133 };
134 #endif // PNDEMCMAKECLUSTER_HH
void SetStorageOfData(Bool_t val)
Method to specify whether clusters are stored or not.
void EnableRemovalOfLowEnergyClusters(Bool_t enable)
PndEmcMakeCluster(Int_t verbose=0, Bool_t storeclusters=kTRUE)
virtual void ExecuteTasks(Option_t *option)
Finish clusters after subtasks have been executed.
virtual void FinishClusters()
virtual ~PndEmcMakeCluster()
virtual void Exec(Option_t *opt)
void StoreClusterBaseDigis(Bool_t val=kTRUE)
Method to specify whether underlying digis are stored or not.
parameter set of Emc digitisation
Definition: PndEmcDigiPar.h:12
virtual void RemoveLowEnergyClusters()
Task to cluster PndEmcDigis.
void SetClusterActiveTime(Double_t time)
Override EmcRecoPar cluster active time parameter ..to be set in ns!!!
void EnableBetterNeutralReconstruction(Bool_t enable)
Parameter set for Emc Reco.
Definition: PndEmcRecoPar.h:12
void SetClusterMinimumEnergy(Double_t minE)
Set minimum cluster energy.
virtual void SetParContainers()
virtual InitStatus Init()