25 #ifndef PNDEMCCLUSTER_H 26 #define PNDEMCCLUSTER_H 29 #include "FairTimeStamp.h" 32 #include "TLorentzVector.h" 33 #include "TClonesArray.h" 46 score |= val << shift;
49 Bool_t
GetValShift(Int_t shift) {
return score >> shift & 0x1; }
57 virtual void Print(
const Option_t *opt =
"")
const;
61 Double_t fSingleCrystalRadius = 1.84;
64 const std::vector<Int_t> &
DigiList()
const {
return fDigiList; };
65 std::vector<Int_t> &
DigiList() {
return fDigiList; };
66 const std::map<Int_t, Int_t> &
LocalMaxMap()
const {
return fLocalMaxMap; };
67 const std::map<Int_t, Int_t> &
MemberDigiMap()
const {
return fMemberDigiMap; };
70 virtual const PndEmcDigi *Maxima(
const TClonesArray *digiArray)
const;
71 virtual PndEmcDigi *Maxima(
const TClonesArray *digiArray);
74 int MaximaAsIndex(
const TClonesArray *digiArray);
78 Double_t GetEnergy()
const;
80 Double_t theta()
const;
84 TVector3 position()
const;
86 TVector3 where()
const;
95 Double_t
Z20()
const {
return fZ20; }
97 Double_t
Z53()
const {
return fZ53; }
99 Double_t
LatMom()
const {
return fLatMom; }
101 Double_t GetRadius()
const;
114 Short_t GetModule()
const;
119 Int_t NumberOfDigis()
const;
120 Int_t NBumps()
const;
122 bool isInCluster(
PndEmcDigi *theDigi,
const TClonesArray *digiArray);
125 virtual Double_t DistanceToCentre(
const TVector3 &aPoint)
const;
126 virtual Double_t DistanceToCentre(
const PndEmcDigi *aDigi)
const;
129 static Double_t FindPhiDiff(Double_t, Double_t);
132 virtual void addDigi(
const TClonesArray *digiArray, Int_t iDigi);
133 virtual void removeDigi(
const TClonesArray *digiArray, Int_t iDigi);
134 virtual std::vector<Int_t>::iterator removeDigi(
const TClonesArray *digiArray, std::vector<Int_t>::iterator it);
135 void addCluster(
PndEmcCluster *cluster,
const TClonesArray *digiArray);
136 virtual void addLocalMax(
const TClonesArray *digiArray, Int_t iDigi);
137 virtual void addLocalMax(
const PndEmcDigi *digi);
138 virtual void SetNBumps(
unsigned nbumps);
149 void SetZ20(Double_t z20) { fZ20 = z20; }
150 void SetZ53(Double_t z53) { fZ53 = z53; }
158 fRadius = clusradius + n * fSingleCrystalRadius;
165 fXRadius = xrad + n * fSingleCrystalRadius;
170 fYRadius = yrad + n * fSingleCrystalRadius;
175 void AddTracksEnteringExiting(
const FairMultiLinkedData &tracksEntering,
const FairMultiLinkedData &tracksExiting);
177 Double_t GetEnergyCorrected()
const;
179 const std::vector<Int_t> &GetMcList()
const;
185 TLorentzVector GetLorentzVector();
187 void OverwriteDigiList(Int_t, Int_t);
193 void FillScoreBoard(FairMultiLinkedData tracks, std::map<FairLink, LinkScoreBoard> &scoreBoard, Int_t shift);
221 void invalidateCache(
bool);
226 #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()