568cf70d4ef26cf3169f9e4824a1d2f2014cf2b6
[u/mrichter/AliRoot.git] / FMD / AliFMDAnaRing.h
1 // -*- mode: c++ -*-
2 #ifndef ALIFMDANARING_H
3 #define ALIFMDANARING_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
5  * reserved. 
6  *
7  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
8  *
9  * See cxx source for full Copyright notice                               
10  */
11 //____________________________________________________________________
12 //
13 // Utility class for analysing ESD data. 
14 // This class does sharing and background correction.
15 // It can form a base class for other things too.
16 //
17 #include <TObject.h>
18 #include <TH2D.h>
19 class TBrowser;
20
21 /** Base class for analysing FMD ESD data */
22 class AliFMDAnaRing : public TObject
23 {
24 public:
25   /** Constructor */
26   AliFMDAnaRing();
27   /** Constructor 
28       @param det   Detector 
29       @param ring  Ring 
30       @param bg    Background - not owned
31       @param c0    Lower cut 
32       @param c1    higher cut */
33   AliFMDAnaRing(UShort_t det, Char_t ring, TH2* bg, Float_t c0, Float_t c1);
34   /** Destructor */
35   virtual ~AliFMDAnaRing() {}
36   /** Called at beginning of run */
37   virtual void Init() { fNEvents = 0; }
38   /** Called at beginning of event */
39   virtual void Begin() { fNEvents++; }
40   /** Process ESD 
41       @param phi Azimuthal angle @f$ \varphi @f$ of the hit (radians)
42       @param eta Psuedo-rapidity @f$ \eta@f$ of hit
43       @param m1  Multiplicity of this strip
44       @param m2  Multiplicity of neighbor strip 
45       @return @c true if hits are merged */
46   virtual Bool_t ProcessESD(Float_t phi, Float_t eta, Float_t& m1, Float_t m2);
47   /** User defined member function. 
48       @param phi Azimuthal angle @f$ \varphi @f$ of the hit  (radians) 
49       @param eta Psuedo-rapidity @f$ \eta@f$ of hit
50       @param mult Corrected multiplicity */
51   virtual void Fill(Float_t phi, Float_t eta, Float_t mult) = 0;
52   /** Called at end of event */
53   virtual void End() {}
54   /** Called at end of run */
55   virtual void Finish();
56   /** Get the detector identifier 
57       @return Detector identifier */
58   UShort_t Detector() const { return fDet; }
59   /** Get the ring identifier 
60       @return Ring identifier */
61   Char_t Ring() const { return fRing; }
62   /** Get the number of seqments */ 
63   UShort_t NSeq() const { return fNSeq; }
64   /** Get the name 
65       @return static string */ 
66   const Char_t* Name() const { return fName; }
67   /** Get the ring color 
68       @return color */
69   Int_t  Color() const;
70   /** Browse this object */
71   virtual void Browse(TBrowser* b);
72   /** This is a folder */ 
73   virtual Bool_t IsFolder() const { return kTRUE; }
74 protected: 
75   /** Hidden copy constructor */
76   AliFMDAnaRing(const AliFMDAnaRing&);
77   /** Hidden Assignement operator */
78   AliFMDAnaRing& operator=(const AliFMDAnaRing&);  
79   /** Detector number */
80   UShort_t fDet;        // Detector number 
81   /** Ring identifier */
82   Char_t   fRing;       // Ring identifier 
83   /** Name */
84   Char_t   fName[6];    // Name 
85   /** Background correction */
86   TH2*     fBg;         // Background correction 
87   /** Lower cut */
88   Float_t  fCut0;       // Lower cut 
89   /** Higher cut */
90   Float_t  fCut1;       // Higher cut 
91   /** Whether to use bacground correction */
92   Bool_t   fUseBgCor;   // Whether to use bacground correction 
93   /** # of segments */
94   Int_t    fNSeq;       // # of segments 
95   /** Histogram of multiplicity before any cuts */ 
96   TH2D     fBareMult;   // Bare multiplicity
97   /** Histogram of multiplicity after merging */ 
98   TH2D     fMergedMult; // Multiplicity after merging shared hits
99   /** Histogram of removed multiplicity */ 
100   TH2D     fRemovedMult;// Merged hits
101   /** Histogram of background corrected */ 
102   TH2D     fMult;       // The multiplicity
103   /** Step histogram 1 */ 
104   TH2D     fStep1;      // Diagnostics step 1
105   /** Step histogram 1 */
106   TH2D     fStep2;      // Diagnostics step 2
107   /** Step histogram 1 */
108   TH2D     fStep3;      // Diagnostics step 3
109
110   /** Event counter */ 
111   Int_t    fNEvents;    // Event counter
112   ClassDef(AliFMDAnaRing,1) // Analysis of ESD in a ring 
113 };
114
115
116 #endif 
117 //
118 // EOF
119 //