X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EMCAL%2FAliEMCALTracker.h;h=87934cb4c4a3763ef147af1244eaf0d9e58c6982;hb=f83cd814d04bd18c35eea63521785f3ab4477d93;hp=79b7876b77326667e75ee01aa8fa2dd465dffcf7;hpb=fe17d4cb4b239fce087c9c74c41b5d24087b9347;p=u%2Fmrichter%2FAliRoot.git diff --git a/EMCAL/AliEMCALTracker.h b/EMCAL/AliEMCALTracker.h index 79b7876b773..87934cb4c4a 100644 --- a/EMCAL/AliEMCALTracker.h +++ b/EMCAL/AliEMCALTracker.h @@ -23,13 +23,15 @@ #define ALIEMCALTRACKER_H #include "AliTracker.h" - +#include "TMath.h" class TList; +class TTree; class TObjArray; -class AliESD; +class AliESDEvent; class AliESDCaloCluster; class AliEMCALTrack; class AliEMCALRecPoint; +class AliEMCALGeometry; class AliEMCALTracker : public AliTracker { @@ -42,35 +44,46 @@ public: virtual ~AliEMCALTracker() {Clear();} virtual void Clear(Option_t *option="ALL"); - virtual Int_t Clusters2Tracks(AliESD*) {return -1;} + virtual Int_t Clusters2Tracks(AliESDEvent*) {return -1;} + void InitParameters(); virtual Int_t LoadClusters(TTree*); - Int_t LoadClusters(AliESD* esd); - Int_t LoadTracks(AliESD* esd); - virtual Int_t PropagateBack(AliESD* esd); - virtual Int_t RefitInward(AliESD*) {return -1;} + Int_t LoadClusters(AliESDEvent* esd); + Int_t LoadTracks(AliESDEvent* esd); + virtual Int_t PropagateBack(AliESDEvent* esd); + virtual Int_t RefitInward(AliESDEvent*) {return -1;} virtual void UnloadClusters(); virtual AliCluster* GetCluster(Int_t) const {return NULL;}; + TTree* SearchTrueMatches(); void SetCorrection(Double_t rho, Double_t x0) {fRho=rho;fX0=x0;} void SetCutAlpha(Double_t min, Double_t max) {fCutAlphaMin=min;fCutAlphaMax=max;} void SetCutAngle(Double_t value) {fCutAngle=value;} void SetCutX(Double_t value) {fCutX=value;} void SetCutY(Double_t value) {fCutY=value;} void SetCutZ(Double_t value) {fCutZ=value;} + void SetGeometry(AliEMCALGeometry *geom) {fGeom=geom;} void SetMaxDistance(Double_t value) {fMaxDist=value;} + void SetCutNITS(Double_t value) {fCutNITS=value;} + void SetCutNTPC(Double_t value) {fCutNTPC=value;} void SetNumberOfSteps(Int_t n) {fNPropSteps=n;if(!n)SetTrackCorrectionMode("NONE");} void SetTrackCorrectionMode(Option_t *option); + enum { + kUnmatched = -99999 + }; + class AliEMCALMatchCluster : public TObject { public: - AliEMCALMatchCluster(Int_t ID, AliEMCALRecPoint *recPoint); - AliEMCALMatchCluster(Int_t ID, AliESDCaloCluster *caloCluster); - virtual ~AliEMCALMatchCluster() { } - Int_t& Index() {return fIndex;} - Int_t& Label() {return fLabel;} - Double_t& X() {return fX;} - Double_t& Y() {return fY;} - Double_t& Z() {return fZ;} + AliEMCALMatchCluster(Int_t ID, AliEMCALRecPoint *recPoint); + AliEMCALMatchCluster(Int_t ID, AliESDCaloCluster *caloCluster); + virtual ~AliEMCALMatchCluster() { } + //---------------------------------------------------------------------------- + Int_t Index() const {return fIndex;} + Int_t Label() const {return fLabel;} + Double_t X() const {return fX;} + Double_t Y() const {return fY;} + Double_t Z() const {return fZ;} + Double_t Phi() const {return TMath::ATan2(fY, fX);} private: Int_t fIndex; // index of cluster in its native container (ESD or TClonesArray) Int_t fLabel; // track label of assigned cluster @@ -82,23 +95,27 @@ public: class AliEMCALMatch : public TObject { public: - AliEMCALMatch(); - AliEMCALMatch(const AliEMCALMatch& copy); - ~AliEMCALMatch() { } + AliEMCALMatch(); + AliEMCALMatch(const AliEMCALMatch& copy); + virtual ~AliEMCALMatch() { } + //---------------------------------------------------------------------------- Bool_t& CanBeSaved() {return fCanBeSaved;} Int_t Compare(const TObject *obj) const; - Double_t GetDistance() {return fDistance;} - Int_t GetIndexC() {return fIndexC;} - Int_t GetIndexT() {return fIndexT;} + Double_t GetDistance() const {return fDistance;} + Double_t GetPt() const {return fPt;} + Int_t GetIndexC() const {return fIndexC;} + Int_t GetIndexT() const {return fIndexT;} Bool_t IsSortable() const {return kTRUE;} void SetIndexC(Int_t icl) {fIndexC=icl;} void SetIndexT(Int_t itr) {fIndexT=itr;} void SetDistance(Double_t dist) {fDistance=dist;} + void SetPt(Double_t pt) {fPt=pt;} private: Bool_t fCanBeSaved; // when true, this match can be saved, otherwise it will not be Int_t fIndexC; // cluster index in 'fClusters' array Int_t fIndexT; // track index in 'fTracks' array Double_t fDistance; // track - cluster distance + Double_t fPt; // track pt }; private: @@ -106,7 +123,9 @@ private: Double_t AngleDiff(Double_t angle1, Double_t angle2); Double_t CheckPair(AliEMCALTrack *tr, AliEMCALMatchCluster *cluster); Double_t CheckPairV2(AliEMCALTrack *tr, AliEMCALMatchCluster *cluster); + Double_t CheckPairV3(AliEMCALTrack *tr, AliEMCALMatchCluster *cluster); Int_t CreateMatches(); + Bool_t PropagateToEMCAL(AliEMCALTrack *tr); Int_t SolveCompetitions(); enum ETrackCorr { @@ -125,15 +144,19 @@ private: Double_t fCutAlphaMax; // cut on difference between track 'alpha' and phi Double_t fCutAngle; // cut on angle between track projection and cluster Double_t fMaxDist; // maximum allowed total distance between track proj an cluster - + Double_t fCutNITS; // mimimum number of track hits in the ITS + Double_t fCutNTPC; // mimimum number of track hits in the TPC + Double_t fRho; // energy correction: density Double_t fX0; // energy correction: radiation length - TObjArray *fTracks; //! collection of ESD tracks + TObjArray *fTracks; //! collection of tracks TObjArray *fClusters; //! collection of EMCAL clusters (ESDCaloCluster or EMCALRecPoint) TList *fMatches; //! collection of matches between tracks and clusters - ClassDef(AliEMCALTracker, 1) // EMCAL "tracker" + AliEMCALGeometry *fGeom; //! EMCAL geometry + + ClassDef(AliEMCALTracker, 3) // EMCAL "tracker" }; #endif