PandaRoot
PndEmcMakePreclusters.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------
2 // File and Version Information:
3 // $Id: $
4 //
5 //---------------------------------------------------------------------
6 //#pragma once
7 #ifndef PNDEMCMAKEPRECLUSTERS_H
8 #define PNDEMCMAKEPRECLUSTERS_H
9 
10 #include "FairTask.h"
11 #include <vector>
12 
13 #include "FairTSBufferFunctional.h"
14 #include "TStopwatch.h"
15 #include "TH1.h"
16 
17 class TClonesArray;
18 class TObjectArray;
19 class PndEmcDigi;
20 class PndEmcCluster;
21 class PndEmcPrecluster;
22 class PndEmcGeoPar;
23 class PndEmcRecoPar;
24 class BinaryFunctor;
25 
26 
27 class PndEmcMakePreclusters : public FairTask
28 {
29 public:
30 
31  // Constructors
32 
33  PndEmcMakePreclusters(Int_t verbose=0, Bool_t storeclusters=kTRUE);
34 
35  // Destructor
36 
37  virtual ~PndEmcMakePreclusters( );
38 
40  virtual InitStatus Init();
41 
43  virtual void Exec(Option_t* opt);
44 
45  virtual void FinishTask();
46 
47  void SetStorageOfData(Bool_t val);
48 
50  void StoreClusterBaseDigis(Bool_t val = kTRUE) { fStoreClusterBase = kTRUE; }
51 
53  void SetTimebunchCutTime(Double_t time) { fTimebunchCutTime = time; }
54  void SetClusterActiveTime(Double_t dt) { fClusterActiveTime = dt; }
55 
56  void SetPositionMethod(Int_t method) { fPosMethod = method; }
57  void SetDigiPositionType(Int_t type=-1) { fDigiPosType = type; } // select whether to use mapped or real digi position
58 
59  void SetAutoDetermineTimecuts(Bool_t autodet) {fAutoDetermine = autodet;}
60 
61 protected:
62  virtual void FinishPreclusters();
63  void FinishPrecluster(PndEmcPrecluster* tmpcluster);
64 
65 private:
67  TClonesArray* fDigiArray;
68 
70  TClonesArray* fPreclusterArray;
71 
72  PndEmcGeoPar* fGeoPar;
73  PndEmcRecoPar* fRecoPar;
75  Double_t fDigiEnergyTresholdBarrel;
76  Double_t fDigiEnergyTresholdFWD;
77  Double_t fDigiEnergyTresholdBWD;
78  Double_t fDigiEnergyTresholdShashlyk;
79 
80  Double_t fTimebunchCutTime;
81  Double_t fClusterActiveTime;
82  BinaryFunctor* fDigiFunctor;
83 
84  std::vector<Double_t> fClusterPosParam;
85 
86  Int_t fPosMethod;
87  Int_t fDigiPosType;
88  Int_t evtCounter;
89  Int_t digiCounter;
90  Int_t nTotDigisPassed;
91  Int_t fNrOfDigis;
92  Int_t fNrOfEvents;
93  Int_t nPrecProg;
94  Double_t DCtotRtime;
95  Double_t DCtotCtime;
96 
97  TH1I* hNdigis;
98 // TH1D* hRadDiff;
99 // TH1D* hPosDiff;
100 
101  Bool_t fStoreClusters;
102  Bool_t fStoreClusterBase; //restore digis in case of a timebased run
103  Bool_t fAutoDetermine;
104 
106  virtual void SetParContainers();
107 
108  TStopwatch fTimer;
109 
110  ClassDef(PndEmcMakePreclusters, 1)
111 };
112 #endif // PNDEMCMAKEPRECLUSTERS_HH
virtual void Exec(Option_t *opt)
void FinishPrecluster(PndEmcPrecluster *tmpcluster)
void SetClusterActiveTime(Double_t dt)
void SetStorageOfData(Bool_t val)
Method to specify whether clusters are stored or not.
virtual ~PndEmcMakePreclusters()
PndEmcMakePreclusters(Int_t verbose=0, Bool_t storeclusters=kTRUE)
virtual InitStatus Init()
void SetPositionMethod(Int_t method)
void StoreClusterBaseDigis(Bool_t val=kTRUE)
Restoring digis makes only sense if reconstruction is done timebased.
void SetDigiPositionType(Int_t type=-1)
void SetAutoDetermineTimecuts(Bool_t autodet)
represents an emc precluster, formed in the (virtual) data concentrators
void SetTimebunchCutTime(Double_t time)
Override EmcRecoPar cluster active time parameter ..to be set in ns!!!
virtual void FinishTask()
Parameter set for Emc Reco.
Definition: PndEmcRecoPar.h:12
virtual void FinishPreclusters()