Hall A ROOT/C++ Analyzer (podd)
Loading...
Searching...
No Matches
THaShower.h
Go to the documentation of this file.
1#ifndef Podd_THaShower_h_
2#define Podd_THaShower_h_
3
5// //
6// THaShower //
7// //
9
10#include "THaPidDetector.h"
11#include "DetectorData.h"
12#include <vector>
13
14class TClonesArray;
15
16class THaShower : public THaPidDetector {
17
18public:
19 explicit THaShower( const char* name, const char* description = "",
20 THaApparatus* a = nullptr );
21 THaShower(); // for ROOT I/O
22 virtual ~THaShower();
23
24 // THaShower now uses THaDetectorBase::Decode()
25 virtual void Clear( Option_t* ="" );
28 UInt_t GetMainClusterSize() const { return fClBlk.size(); }
29 UInt_t GetNclust() const { return fNclust; }
30 UInt_t GetNhits() const { return fADCData->GetHitCount(); }
31 Data_t GetE() const { return fE; }
32 Data_t GetX() const { return fX; }
33 Data_t GetY() const { return fY; }
34
35 // Extension of standard ADCData to handle channel mapping
37 public:
38 ShowerADCData( const char* name, const char* desc, Int_t nelem,
39 const std::vector<Int_t>& chanmap )
40 : Podd::ADCData(name,desc,nelem), fChanMap(chanmap) {}
41 Int_t GetLogicalChannel( const DigitizerHitInfo_t& hitinfo ) const override;
42 protected:
43 const std::vector<Int_t>& fChanMap;
44 };
45
46protected:
47
48 // Mapping (see also fDetMap)
49 std::vector<Int_t> fChanMap; // Map physical -> logical channel numbers
50
51 // Configuration
52 Int_t fNrows; // Number of rows
53 Data_t fEmin; // Minimum energy for a cluster center
54
55 // Geometry
56 class CenterPos {
57 public:
58 Data_t x; // x-position of block center (m)
59 Data_t y; // y-position of block center (m)
60 };
61 std::vector<CenterPos> fBlockPos; // Block center positions
62
63 // Per-event data
64 Data_t fAsum_p; // Sum of blocks ADC minus pedestal values
65 Data_t fAsum_c; // Sum of blocks corrected ADC amplitudes
66 UInt_t fNclust; // Number of clusters
67 Data_t fE; // Energy (MeV) of main cluster
68 Data_t fX; // Energy-weighted x position (m) of main cluster
69 Data_t fY; // Energy-weighted y position (m) of main cluster
70
72 public:
73 Int_t n; // Block number (0..fNelem-1)
74 Data_t E; // Energy deposit (MeV) for current event
75 };
76 std::vector<ClusterBlock> fClBlk; // Blocks of main cluster
77
78 ShowerADCData* fADCData; // Convenience pointer to ADC data in fDetectorData
79
80 virtual Int_t StoreHit( const DigitizerHitInfo_t& hitinfo, UInt_t data );
81 virtual void PrintDecodedData( const THaEvData& evdata ) const;
82
83 virtual Int_t ReadDatabase( const TDatime& date );
84 virtual Int_t DefineVariables( EMode mode = kDefine );
85
86 ClassDef(THaShower,0) //Generic shower detector class
87};
88
90
91#endif
#define kDefine
Definition BdataLoc.cxx:38
int Int_t
unsigned int UInt_t
Double_t Data_t
Definition DataType.h:13
const char Option_t
#define ClassDef(name, id)
char name[80]
UInt_t GetHitCount() const
ADCData(const char *name, const char *desc, UInt_t nelem)
ShowerADCData(const char *name, const char *desc, Int_t nelem, const std::vector< Int_t > &chanmap)
Definition THaShower.h:38
Int_t GetLogicalChannel(const DigitizerHitInfo_t &hitinfo) const override
const std::vector< Int_t > & fChanMap
Definition THaShower.h:43
virtual void Clear(Option_t *="")
Int_t fNrows
Definition THaShower.h:52
Data_t GetX() const
Definition THaShower.h:32
UInt_t fNclust
Definition THaShower.h:66
virtual ~THaShower()
virtual Int_t StoreHit(const DigitizerHitInfo_t &hitinfo, UInt_t data)
std::vector< ClusterBlock > fClBlk
Definition THaShower.h:76
Data_t GetE() const
Definition THaShower.h:31
Data_t fY
Definition THaShower.h:69
Data_t fEmin
Definition THaShower.h:53
Data_t fX
Definition THaShower.h:68
virtual Int_t FineProcess(TClonesArray &tracks)
std::vector< CenterPos > fBlockPos
Definition THaShower.h:61
Data_t GetY() const
Definition THaShower.h:33
UInt_t GetNclust() const
Definition THaShower.h:29
Data_t fE
Definition THaShower.h:67
UInt_t GetNhits() const
Definition THaShower.h:30
std::vector< Int_t > fChanMap
Definition THaShower.h:49
virtual Int_t DefineVariables(EMode mode=kDefine)
virtual Int_t CoarseProcess(TClonesArray &tracks)
ShowerADCData * fADCData
Definition THaShower.h:78
Data_t fAsum_c
Definition THaShower.h:65
Data_t fAsum_p
Definition THaShower.h:64
UInt_t GetMainClusterSize() const
Definition THaShower.h:28
virtual void PrintDecodedData(const THaEvData &evdata) const
virtual Int_t ReadDatabase(const TDatime &date)
Definition THaShower.cxx:59
TArc a
void tracks()