AliPhysics  3bba2fe (3bba2fe)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliFMDSharingFilter.h
Go to the documentation of this file.
1 //
2 // Class to do the sharing correction. That is, a filter that merges
3 // adjacent strip signals presumably originating from a single particle
4 // that impinges on the detector in such a way that it deposite energy
5 // into two or more strips.
6 //
7 #ifndef ALIFMDSHARINGFILTER_H
8 #define ALIFMDSHARINGFILTER_H
9 
19 #include <TNamed.h>
20 #include <TH2.h>
21 #include <TList.h>
22 #include "AliForwardUtil.h"
23 #include "AliFMDMultCuts.h"
24 class AliESDFMD;
25 class TAxis;
26 class TList;
27 class TH2;
28 class AliFMDFloatMap;
29 
57 {
58 public:
63  enum Status {
65  kNone = 1,
67  kCandidate = 2,
72  };
76  virtual ~AliFMDSharingFilter();
86  AliFMDSharingFilter(const char* title);
87 
97  virtual void SetMergingDisabled(Bool_t disable) {fMergingDisabled = disable; }
103  virtual void SetDebug(Int_t dbg=1) { fDebug = dbg; }
141  /* @} */
142 
152  void SetupForData(const TAxis& axis);
163  Bool_t Filter(const AliESDFMD& input,
164  Bool_t lowFlux,
165  AliESDFMD& output,
166  Double_t zvtx);
174  virtual void Terminate(const TList* dir, TList* output, Int_t nEvents);
182  virtual void CreateOutputObjects(TList* dir);
183  /* @} */
189  virtual void Print(Option_t* option="") const;
190 
212  const AliFMDMultCuts& GetLCuts() const { return fLCuts; }
218  const AliFMDMultCuts& GetHCuts() const { return fHCuts; }
224  void SetLCuts(const AliFMDMultCuts& c) { fLCuts = c; }
230  void SetHCuts(const AliFMDMultCuts& c) { fHCuts = c; }
231  /* @} */
232 protected:
248  {
252  RingHistos();
259  RingHistos(UShort_t d, Char_t r);
265  RingHistos(const RingHistos& o);
273  RingHistos& operator=(const RingHistos& o);
277  ~RingHistos();
281  // void Clear(const Option_t* ="") { fNHits = 0; }
286  // void Incr() { fNHits++; }
291  // void Finish();
297  void CreateOutputObjects(TList* dir);
304  void Terminate(const TList* dir, Int_t nEvents);
305  TH1D* fBefore; // Distribution of signals before filter
306  TH1D* fAfter; // Distribution of signals after filter
307  TH1D* fSingle; // Distribution of 1 signal after filter
308  TH1D* fDouble; // Distribution of 2 signals after filter
309  TH1D* fTriple; // Distribution of 3 signals after filter
310  TH2D* fSinglePerStrip; // Distribution of 1 signal per strip
311  TH2D* fBeforeAfter; // Correlation of before and after
312  TH2D* fNeighborsBefore; // Correlation of neighbors
313  TH2D* fNeighborsAfter; // Correlation of neighbors
314  TH2D* fSumESD; // Summed ESD signal
315  TH2D* fSum; // Summed cluster signal
316  TH1D* fNConsecutive; // # consecutive strips with signal > low cut
317  // ClassDef(RingHistos,4);
318  };
339  Double_t SignalInStrip(const AliESDFMD& fmd,
340  UShort_t d,
341  Char_t r,
342  UShort_t s,
343  UShort_t t) const;
352  Double_t AngleCorrect(Double_t mult, Double_t eta) const;
361  Double_t DeAngleCorrect(Double_t mult, Double_t eta) const;
374  virtual Double_t GetHighCut(UShort_t d, Char_t r, Double_t eta,
375  Bool_t errors=true) const;
388  virtual Double_t GetLowCut(UShort_t d, Char_t r, Double_t eta) const;
389  TList fRingHistos; // List of histogram containers
390  Bool_t fCorrectAngles; // Whether to work on angle corrected signals
391  TH2* fHighCuts; // High cuts used
392  TH2* fLowCuts; // High cuts used
393  Int_t fDebug; // Debug level
394  Bool_t fZeroSharedHitsBelowThreshold; // Zero shared strip below cut?
395  AliFMDMultCuts fLCuts; // Cuts object for low cuts
396  AliFMDMultCuts fHCuts; // Cuts object for high cuts
397  Bool_t fUseSimpleMerging;// enable simple sharing by HHD
398  Bool_t fThreeStripSharing; //In case of simple sharing allow 3 strips
399  Bool_t fMergingDisabled; // If true, do not merge
400  Bool_t fIgnoreESDForAngleCorrection; // Ignore ESD information when angle correcting
402 };
403 
404 #endif
405 // Local Variables:
406 // mode: C++
407 // End:
ClassDef(AliFMDSharingFilter, 11)
AliFMDMultCuts & GetHCuts()
AliFMDMultCuts & GetLCuts()
void Terminate(const TList *dir, Int_t nEvents)
void SetUseAngleCorrectedSignals(Bool_t use)
double Double_t
Definition: External.C:58
Double_t SignalInStrip(const AliESDFMD &fmd, UShort_t d, Char_t r, UShort_t s, UShort_t t) const
Double_t AngleCorrect(Double_t mult, Double_t eta) const
const char * title
Definition: MakeQAPdf.C:26
virtual void SetMergingDisabled(Bool_t disable)
const AliFMDMultCuts & GetLCuts() const
void SetLCuts(const AliFMDMultCuts &c)
char Char_t
Definition: External.C:18
AliFMDSharingFilter & operator=(const AliFMDSharingFilter &)
virtual Double_t GetHighCut(UShort_t d, Char_t r, Double_t eta, Bool_t errors=true) const
void SetupForData(const TAxis &axis)
TCanvas * c
Definition: TestFitELoss.C:172
void SetAllow3Strips(Bool_t use)
virtual void Terminate(const TList *dir, TList *output, Int_t nEvents)
void SetZeroSharedHitsBelowThreshold(Bool_t use)
int Int_t
Definition: External.C:63
Bool_t Filter(const AliESDFMD &input, Bool_t lowFlux, AliESDFMD &output, Double_t zvtx)
Various utilities used in PWGLF/FORWARD.
Definition: External.C:228
Definition: External.C:212
void SetHCuts(const AliFMDMultCuts &c)
virtual void SetDebug(Int_t dbg=1)
virtual void CreateOutputObjects(TList *dir)
AliFMDSharingFilter(const AliFMDSharingFilter &o)
Float_t nEvents[nProd]
Double_t DeAngleCorrect(Double_t mult, Double_t eta) const
Definition: External.C:220
virtual void Print(Option_t *option="") const
virtual Double_t GetLowCut(UShort_t d, Char_t r, Double_t eta) const
void SetIgnoreESDWhenAngleCorrecting(Bool_t use)
RingHistos * GetRingHistos(UShort_t d, Char_t r) const
unsigned short UShort_t
Definition: External.C:28
const char Option_t
Definition: External.C:48
RingHistos & operator=(const RingHistos &o)
bool Bool_t
Definition: External.C:53
void SetUseSimpleSharing(Bool_t use)
const AliFMDMultCuts & GetHCuts() const