AliPhysics  ebc57ae (ebc57ae)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliFMDCorrDoubleHit.cxx
Go to the documentation of this file.
1 //
2 // This class contains the secondary correction and the double hit
3 // correction used in low-flux events.
4 //
5 //
6 #include "AliFMDCorrDoubleHit.h"
7 #include <TBrowser.h>
8 #include <TH1D.h>
9 #include <AliLog.h>
10 #include <iostream>
11 
12 //____________________________________________________________________
14  : fCorrections()
15 {
16  // Constructor
17  //
18  //
19  fCorrections.SetOwner(kTRUE);
20  fCorrections.SetName("doubleHit");
21 }
22 //____________________________________________________________________
24  : TObject(o),
25  fCorrections(o.fCorrections)
26 {
27  // Copy constructor
28  //
29  // Parameters:
30  // o Object to copy from
31 }
32 //____________________________________________________________________
34 {
35  //
36  // Destructor
37  //
38  fCorrections.Clear();
39 }
40 //____________________________________________________________________
43 {
44  // Assignment operator
45  //
46  // Parameters:
47  // o Object to assign from
49 
50  return *this;
51 }
52 //____________________________________________________________________
53 TH1D*
55 {
56  //
57  // Get the double hit correction @f$ h_{r}(\eta)@f$
58  //
59  // Parameters:
60  // d Detector number
61  // r Ring identifier
62  //
63  // Return:
64  // @f$ h_{r}(\eta)@f$
65  //
66  Int_t idx = GetRingIndex(d, r);
67  if (idx < 0) return 0;
68 
69  TObject* o = fCorrections.At(idx);
70  if (!o) {
71  AliWarning(Form("No double hit correction found for FMD%d%c", d, r));
72  return 0;
73  }
74  return static_cast<TH1D*>(o);
75 }
76 //____________________________________________________________________
77 Int_t
79 {
80  //
81  // Get the index corresponding to the given ring
82  //
83  // Parameters:
84  // d Detector
85  // r Ring
86  //
87  // Return:
88  // Index (0 based) or negative in case of errors
89  //
90 
91  switch (d) {
92  case 1: return 0;
93  case 2: return (r == 'I' || r == 'i' ? 1 : 2); break;
94  case 3: return (r == 'I' || r == 'i' ? 3 : 4); break;
95  }
96  AliWarning(Form("Index for FMD%d%c not found", d, r));
97  return -1;
98 }
99 //____________________________________________________________________
100 Bool_t
102 {
103  //
104  // Set the double hit correction @f$ h_{r}(\eta)@f$. Note, that the
105  // object takes ownership of the passed pointer.
106  //
107  // Parameters:
108  // d Detector number (1-3)
109  // r Ring identifier (I or O)
110  // h @f$ h_{r}(\eta)@f$
111  //
112  // Return:
113  // true if operation succeeded
114  //
115  Int_t idx = GetRingIndex(d, r);
116  if (idx < 0) return kFALSE;
117 
118  h->SetName(Form("FMD%d%c", d, r));
119  h->SetTitle(Form("Double hit correction for FMD%d%c", d,r));
120  h->SetXTitle("#eta");
121  h->SetYTitle("#sum_{i} N_{i,strips hit}(#eta)/"
122  "#sum_{i} N_{i,total hits}(#eta)");
123  // h->SetFillColor(Color(d,r));
124  h->SetFillStyle(3001);
125  h->SetDirectory(0);
126  h->SetStats(0);
127 
128  fCorrections.AddAtAndExpand(h, idx);
129  return kTRUE;
130 }
131 //____________________________________________________________________
132 void
134 {
135  // BRowse this object
136  //
137  // Parameters:
138  // b Browser to use
139  b->Add(&fCorrections);
140 }
141 //____________________________________________________________________
142 void
144 {
145  // Print this object
146  //
147  // Parameters:
148  // option Passed to TH2D::Print
149  std::cout << "Double hit correction" << std::endl;
150  fCorrections.Print(option);
151 }
152 
153 //____________________________________________________________________
154 //
155 // EOF
156 //
char Char_t
Definition: External.C:18
AliFMDCorrDoubleHit & operator=(const AliFMDCorrDoubleHit &o)
void Browse(TBrowser *b)
Bool_t SetCorrection(UShort_t d, Char_t r, TH1D *h)
int Int_t
Definition: External.C:63
Definition: External.C:212
unsigned short UShort_t
Definition: External.C:28
const char Option_t
Definition: External.C:48
Int_t GetRingIndex(UShort_t d, Char_t r) const
TH1D * GetCorrection(UShort_t d, Char_t r) const
void Print(Option_t *option="R") const
bool Bool_t
Definition: External.C:53