X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGLF%2FFORWARD%2Fanalysis2%2FAliFMDSharingFilter.h;h=37ea26178b29789bbc1f9aabacefcf353c24ffc1;hb=12118f317bf929de19dbcf6acf365abbc8ff9eac;hp=a826d2b332dc442f979aa9818fe76971f70ec889;hpb=33438b4cdec4a7872171e153ed2e76e1d47448d1;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGLF/FORWARD/analysis2/AliFMDSharingFilter.h b/PWGLF/FORWARD/analysis2/AliFMDSharingFilter.h index a826d2b332d..37ea26178b2 100644 --- a/PWGLF/FORWARD/analysis2/AliFMDSharingFilter.h +++ b/PWGLF/FORWARD/analysis2/AliFMDSharingFilter.h @@ -33,6 +33,8 @@ class AliFMDFloatMap; * that impinges on the detector in such a way that it deposite energy * into two or more strips. * + * @image html alice-int-2012-040-share_fraction.png "Energy loss sharing" + * * @par Input: * - AliESDFMD object - from reconstruction * @@ -55,7 +57,10 @@ class AliFMDFloatMap; class AliFMDSharingFilter : public TNamed { public: - /** Status of a strip */ + /** + * Status of a strip + * @deprecated Not used + */ enum Status { /** Nothing yet */ kNone = 1, @@ -80,34 +85,23 @@ public: * @param title Title of object - not significant */ AliFMDSharingFilter(const char* title); + /** - * Copy constructor - * - * @param o Object to copy from + * @{ + * @name Parameters etc. */ - AliFMDSharingFilter(const AliFMDSharingFilter& o); /** - * Assignment operator + * If called with a true argument, then merging is wholy disabled * - * @param o Object to assign from - * - * @return Reference to this + * @param disable If true, disable merging altogether */ - AliFMDSharingFilter& operator=(const AliFMDSharingFilter& o); - - /** - * Initialize - * - * @param axis Default eta axis from parent task - */ - void SetupForData(const TAxis& axis); + virtual void SetMergingDisabled(Bool_t disable) {fMergingDisabled = disable; } /** * Set the debug level. The higher the value the more output * * @param dbg Debug level */ virtual void SetDebug(Int_t dbg=1) { fDebug = dbg; } - /** * Enable use of angle corrected signals in the algorithm * @@ -137,16 +131,26 @@ public: * @param use allow three strips * */ - void SetAllow3Strips(Bool_t use) { fThreeStripSharing = use; } - - /** - * In case of a displaced vertices recalculate eta and angle correction + void SetAllow3Strips(Bool_t use) { fThreeStripSharing = use; } + /** + * Set whether to ignore the ESD info when angle correcting, this + * is to counter a known issue where the info in the ESD is incorrect * - * @param use recalculate or not + * @param use ignore the ESD info + */ + void SetIgnoreESDWhenAngleCorrecting(Bool_t use) { fIgnoreESDForAngleCorrection = use; } + /* @} */ + + /** + * @{ + * @name Processing + */ + /** + * Initialize * + * @param axis Default eta axis from parent task */ - void SetRecalculateEta(Bool_t use) { fRecalculateEta = use; } - + void SetupForData(const TAxis& axis); /** * Filter the input AliESDFMD object * @@ -168,8 +172,7 @@ public: * @param output Output list * @param nEvents Number of events */ - virtual void Terminate(const TList* dir, TList* output, Int_t nEvents); - + virtual void Terminate(const TList* dir, TList* output, Int_t nEvents); /** * Define the output histograms. These are put in a sub list of the * passed list. The histograms are merged before the parent task calls @@ -178,6 +181,7 @@ public: * @param dir Directory to add to */ virtual void CreateOutputObjects(TList* dir); + /* @} */ /** * Print information * @@ -185,6 +189,10 @@ public: */ virtual void Print(Option_t* option="") const; + /** + * @{ + * @name Cuts + */ /** * Get the low cuts * @@ -221,11 +229,18 @@ public: * @param c Cuts object */ void SetHCuts(const AliFMDMultCuts& c) { fHCuts = c; } - - void AddDead(UShort_t d, Char_t r, UShort_t s, UShort_t t); - void AddDeadRegion(UShort_t d, Char_t r, UShort_t s1, UShort_t s2, - UShort_t t1, UShort_t t2); + /* @} */ protected: + /** + * Copy constructor - not implemented + */ + AliFMDSharingFilter(const AliFMDSharingFilter& o); + /** + * Assignment operator - not implemented + * + * @return Reference to this + */ + AliFMDSharingFilter& operator=(const AliFMDSharingFilter& o); /** * Internal data structure to keep track of the histograms */ @@ -263,17 +278,17 @@ protected: /** * Clear this object */ - void Clear(const Option_t* ="") { fNHits = 0; } + // void Clear(const Option_t* ="") { fNHits = 0; } /** * Increase number of hits * */ - void Incr() { fNHits++; } + // void Incr() { fNHits++; } /** * Finish off * */ - void Finish(); + // void Finish(); /** * Make output * @@ -287,21 +302,19 @@ protected: * @param dir Where the output is */ void Terminate(const TList* dir, Int_t nEvents); - TH1D* fBefore; // Distribution of signals before filter - TH1D* fAfter; // Distribution of signals after filter - TH1D* fSingle; // Distribution of 1 signal after filter - TH1D* fDouble; // Distribution of 2 signals after filter - TH1D* fTriple; // Distribution of 3 signals after filter - TH2D* fSinglePerStrip; // Distribution of 1 signal per strip - TH1D* fDistanceBefore; //Distance between signals before sharing - TH1D* fDistanceAfter; //Distance between signals after sharing - TH2D* fBeforeAfter; // Correlation of before and after + TH1D* fBefore; // Distribution of signals before filter + TH1D* fAfter; // Distribution of signals after filter + TH1D* fSingle; // Distribution of 1 signal after filter + TH1D* fDouble; // Distribution of 2 signals after filter + TH1D* fTriple; // Distribution of 3 signals after filter + TH2D* fSinglePerStrip; // Distribution of 1 signal per strip + TH2D* fBeforeAfter; // Correlation of before and after TH2D* fNeighborsBefore; // Correlation of neighbors - TH2D* fNeighborsAfter; // Correlation of neighbors - TH2D* fSum; // Summed signal - TH1D* fHits; // Distribution of hit strips. - Int_t fNHits; // Number of hit strips per event - ClassDef(RingHistos,2); + TH2D* fNeighborsAfter; // Correlation of neighbors + TH2D* fSumESD; // Summed ESD signal + TH2D* fSum; // Summed cluster signal + TH1D* fNConsecutive; // # consecutive strips with signal > low cut + ClassDef(RingHistos,4); }; /** * Get the ring histogram container @@ -328,64 +341,6 @@ protected: Char_t r, UShort_t s, UShort_t t) const; - /** - * The actual algorithm - * - * @param mult The unfiltered signal in the strip - * @param eta Psuedo rapidity - * @param prevE Previous strip signal (or 0) - * @param nextE Next strip signal (or 0) - * @param lowFlux Whether this is a low flux event - * @param d Detector - * @param r Ring - * @param s Sector - * @param t Strip - * @param usedPrev Whether the previous strip was used in sharing or not - * @param usedThis Wether this strip was used in sharing or not. - * - * @return The filtered signal in the strip - */ - Double_t MultiplicityOfStrip(Double_t mult, - Double_t eta, - Double_t prevE, - Double_t nextE, - Bool_t lowFlux, - UShort_t d, - Char_t r, - UShort_t s, - UShort_t t, - Bool_t& usedPrev, - Bool_t& usedThis) const; - /** - * The actual algorithm - * - * @param thisE This strips energy - * @param prevE Previous strip enery - * @param nextE Next strip energy - * @param eta Psuedo-rapidity - * @param lowFlux Whether to use low flux settings - * @param d Detector - * @param r Ring - * @param s Sector - * @param t Strip - * @param prevStatus Previous status - * @param thisStatus This status - * @param nextStatus Next status - * - * @return The filtered signal in the strip - */ - Double_t MultiplicityOfStrip(Double_t thisE, - Double_t prevE, - Double_t nextE, - Double_t eta, - Bool_t lowFlux, - UShort_t d, - Char_t r, - UShort_t s, - UShort_t t, - Status& prevStatus, - Status& thisStatus, - Status& nextStatus) const; /** * Angle correct the signal * @@ -431,24 +386,19 @@ protected: * @return */ virtual Double_t GetLowCut(UShort_t d, Char_t r, Double_t eta) const; - - virtual Bool_t IsDead(UShort_t d, Char_t r, UShort_t s, UShort_t t) const; - TList fRingHistos; // List of histogram containers - // Double_t fLowCut; // Low cut on sharing - Bool_t fCorrectAngles; // Whether to work on angle corrected signals - TH2* fSummed; // Operations histogram - TH2* fHighCuts; // High cuts used - TH2* fLowCuts; // High cuts used - AliFMDFloatMap* fOper; // Operation done per strip - Int_t fDebug; // Debug level - Bool_t fZeroSharedHitsBelowThreshold; //Whether to zero shared strip below cut - AliFMDMultCuts fLCuts; //Cuts object for low cuts - AliFMDMultCuts fHCuts; //Cuts object for high cuts - Bool_t fUseSimpleMerging; //enable simple sharing by HHD + TList fRingHistos; // List of histogram containers + Bool_t fCorrectAngles; // Whether to work on angle corrected signals + TH2* fHighCuts; // High cuts used + TH2* fLowCuts; // High cuts used + Int_t fDebug; // Debug level + Bool_t fZeroSharedHitsBelowThreshold; // Zero shared strip below cut? + AliFMDMultCuts fLCuts; // Cuts object for low cuts + AliFMDMultCuts fHCuts; // Cuts object for high cuts + Bool_t fUseSimpleMerging;// enable simple sharing by HHD Bool_t fThreeStripSharing; //In case of simple sharing allow 3 strips - Bool_t fRecalculateEta; //Whether to recalculate eta and angle correction (disp vtx) - TArrayI fExtraDead; // List of extra dead channels - ClassDef(AliFMDSharingFilter,6); // + Bool_t fMergingDisabled; // If true, do not merge + Bool_t fIgnoreESDForAngleCorrection; // Ignore ESD information when angle correcting + ClassDef(AliFMDSharingFilter,11); // }; #endif