13 #ifndef PNDEMCCLUSTER_H 14 #define PNDEMCCLUSTER_H 17 #include "FairTimeStamp.h" 20 #include "TLorentzVector.h" 21 #include "TClonesArray.h" 34 score |= val << shift;
37 Bool_t
GetValShift(Int_t shift) {
return score >> shift & 0x1; }
45 virtual void Print(
const Option_t *opt =
"")
const;
49 Double_t fSingleCrystalRadius = 1.84;
52 const std::vector<Int_t> &
DigiList()
const {
return fDigiList; };
53 std::vector<Int_t> &
DigiList() {
return fDigiList; };
54 const std::map<Int_t, Int_t> &
LocalMaxMap()
const {
return fLocalMaxMap; };
55 const std::map<Int_t, Int_t> &
MemberDigiMap()
const {
return fMemberDigiMap; };
58 virtual const PndEmcDigi *Maxima(
const TClonesArray *digiArray)
const;
59 virtual PndEmcDigi *Maxima(
const TClonesArray *digiArray);
62 int MaximaAsIndex(
const TClonesArray *digiArray);
66 Double_t GetEnergy()
const;
68 Double_t theta()
const;
72 TVector3 position()
const;
74 TVector3 where()
const;
83 Double_t
Z20()
const {
return fZ20; }
85 Double_t
Z53()
const {
return fZ53; }
87 Double_t
LatMom()
const {
return fLatMom; }
89 Double_t GetRadius()
const;
102 Short_t GetModule()
const;
107 Int_t NumberOfDigis()
const;
108 Int_t NBumps()
const;
110 bool isInCluster(
PndEmcDigi *theDigi,
const TClonesArray *digiArray);
113 virtual Double_t DistanceToCentre(
const TVector3 &aPoint)
const;
114 virtual Double_t DistanceToCentre(
const PndEmcDigi *aDigi)
const;
117 static Double_t FindPhiDiff(Double_t, Double_t);
120 virtual void addDigi(
const TClonesArray *digiArray, Int_t iDigi);
121 virtual void removeDigi(
const TClonesArray *digiArray, Int_t iDigi);
122 virtual std::vector<Int_t>::iterator removeDigi(
const TClonesArray *digiArray, std::vector<Int_t>::iterator it);
123 void addCluster(
PndEmcCluster *cluster,
const TClonesArray *digiArray);
124 virtual void addLocalMax(
const TClonesArray *digiArray, Int_t iDigi);
125 virtual void addLocalMax(
const PndEmcDigi *digi);
126 virtual void SetNBumps(
unsigned nbumps);
137 void SetZ20(Double_t z20) { fZ20 = z20; }
138 void SetZ53(Double_t z53) { fZ53 = z53; }
146 fRadius = clusradius + n * fSingleCrystalRadius;
153 fXRadius = xrad + n * fSingleCrystalRadius;
158 fYRadius = yrad + n * fSingleCrystalRadius;
163 void AddTracksEnteringExiting(
const FairMultiLinkedData &tracksEntering,
const FairMultiLinkedData &tracksExiting);
165 Double_t GetEnergyCorrected()
const;
167 const std::vector<Int_t> &GetMcList()
const;
173 TLorentzVector GetLorentzVector();
175 void OverwriteDigiList(Int_t, Int_t);
181 void FillScoreBoard(FairMultiLinkedData tracks, std::map<FairLink, LinkScoreBoard> &scoreBoard, Int_t shift);
209 void invalidateCache(
bool);
214 #endif // EMCCLUSTER_HH Double_t GetYRadius() const
void SetEnergy(Double_t en)
void SetRadius(Double_t clusradius, Int_t n=1)
std::map< Int_t, Int_t > fLocalMaxMap
std::map< Int_t, Int_t > fMcMap
void SetYRadius(Double_t yrad, Int_t n=1)
Double_t GetXRadius() const
void SetTrackExiting(const FairMultiLinkedData &tracks)
stores crystal index coordinates (x,y) or (theta,phi)
bool IsPositionValid() const
Int_t GetMcIndex(Int_t i=0)
const std::map< Int_t, Int_t > & MemberDigiMap() const
void SetXRadius(Double_t xrad, Int_t n=1)
void SetModule(Short_t mod)
FairMultiLinkedData fTrackExiting
std::vector< Int_t > fMcList
FairMultiLinkedData fTrackEntering
bool IsEnergyValid() const
const std::vector< Int_t > & DigiList() const
std::map< Int_t, Int_t > fMemberDigiMap
FairMultiLinkedData GetTrackExiting() const
Task to cluster PndEmcDigis.
void SetZ20(Double_t z20)
void SetZ53(Double_t z53)
TLorentzVector fLorentzVector
Bool_t GetValShift(Int_t shift)
void SetPosition(TVector3 pos)
std::vector< Int_t > fDigiList
void SetValShift(Bool_t val, Int_t shift)
void SetTrackEntering(const FairMultiLinkedData &tracks)
FairMultiLinkedData GetTrackEntering() const
const std::map< Int_t, Int_t > & LocalMaxMap() const
void SetLatMom(Double_t latMom)
std::vector< Int_t > & DigiList()