PandaRoot
PndEmcMakeClusterOnline.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------
2 // File and Version Information:
3 // $Id: $
4 //---------------------------------------------------------------------
5 //#pragma once
6 #ifndef PNDEMCMAKECLUSTERONLINE_H
7 #define PNDEMCMAKECLUSTERONLINE_H
8 
9 #include <PndPersistencyTask.h>
10 #include <vector>
11 
12 #include "FairTSBufferFunctional.h"
13 #include "TStopwatch.h"
14 #include "TCanvas.h"
15 #include "TH1.h"
16 
17 class TClonesArray;
18 class TObjectArray;
19 class PndEmcDigi;
20 class PndEmcCluster;
21 class PndEmcGeoPar;
22 class PndEmcRecoPar;
23 class BinaryFunctor;
24 
34 {
35 public:
36 
37  // Constructors
38 
39  PndEmcMakeClusterOnline(Int_t verbose=0, Bool_t storeclusters=kTRUE);
40 
41  // Destructor
42 
43  virtual ~PndEmcMakeClusterOnline( );
44 
46  virtual InitStatus Init();
47 
49  virtual void Exec(Option_t* opt);
50 
52  virtual void FinishTask();
53 
54  void SetStorageOfData(Bool_t val);
55 
57  void StoreClusterBaseDigis(Bool_t val = kTRUE) { fStoreClusterBase = val; }
58 
60  void SetTimebunchCutTime(Double_t time) { fTimebunchCutTime = time; }
62  void SetClusterActiveTime(Double_t dt) { fClusterActiveTime = dt; }
63 
65  void SetClusterMinimumEnergy(Double_t minE) { fClusterEnergyCut = minE; }
66  void EnableRemovalOfLowEnergyClusters(Bool_t enable) {fRemoveLowEclus = enable;}
68  void SetAutoDetermineTimecuts(Bool_t autodet) {fAutoDetermine = autodet;}
69 
70 protected:
71  virtual void FinishClusters();
72  void FinishCluster(PndEmcCluster* tmpcluster);
73  virtual void RemoveLowEnergyClusters();
74 
75 private:
77  TClonesArray* fDigiArray;
78 
80  TClonesArray* fClusterArray;
81 
82  PndEmcGeoPar* fGeoPar;
83  PndEmcRecoPar* fRecoPar;
85  Double_t fDigiEnergyTresholdBarrel;
86  Double_t fDigiEnergyTresholdFWD;
87  Double_t fDigiEnergyTresholdBWD;
88  Double_t fDigiEnergyTresholdShashlyk;
89  Double_t fClusterEnergyCut;
91  Double_t fTimebunchCutTime; // Defines how long clusters are kept open in timebased reconstruction
92  Double_t fClusterActiveTime;
93  BinaryFunctor* fDigiFunctor;
94 
95  Int_t fNrOfEvents;
96  Int_t fNrOfDigis;
97  Int_t nOnlProg;
98  Int_t digiCounter;
99  Int_t evtCounter;
100  Double_t OtotRtime;
101  Double_t OtotCtime;
102 
103  std::vector<Double_t> fClusterPosParam;
104 
105  Bool_t fStoreClusters;
106  Bool_t fStoreClusterBase; //re-store digis in case of a timebased run
107  Bool_t fRemoveLowEclus;
108  Bool_t fAutoDetermine;
109 
110  TH1I* hClusMultiplicity;
111  TH1I* hEventsPerCluster;
112  TH1D* hTimeDifference;
113 
115  virtual void SetParContainers();
116 
117  TStopwatch fTimer;
118 
119  ClassDef(PndEmcMakeClusterOnline, 1)
120 };
121 #endif // PNDEMCMAKECLUSTERONLINE_HH
void SetAutoDetermineTimecuts(Bool_t autodet)
void SetTimebunchCutTime(Double_t time)
Override EmcRecoPar time gap parameter ..to be set in ns!!!
virtual void FinishTask()
void FinishCluster(PndEmcCluster *tmpcluster)
Task to create clusters from digis.
virtual void Exec(Option_t *opt)
virtual ~PndEmcMakeClusterOnline()
void SetClusterMinimumEnergy(Double_t minE)
Set minimum cluster energy.
virtual InitStatus Init()
virtual void RemoveLowEnergyClusters()
void SetClusterActiveTime(Double_t dt)
Set time threshold for separating digis within a timebunch in ns.
void SetStorageOfData(Bool_t val)
Method to specify whether clusters are stored or not.
virtual void FinishClusters()
Parameter set for Emc Reco.
Definition: PndEmcRecoPar.h:12
void StoreClusterBaseDigis(Bool_t val=kTRUE)
Restoring digis makes only sense if reconstruction is done timebased.
PndEmcMakeClusterOnline(Int_t verbose=0, Bool_t storeclusters=kTRUE)
void EnableRemovalOfLowEnergyClusters(Bool_t enable)