Number of sigma pedestal cut increased to 4
[u/mrichter/AliRoot.git] / STEER / ESD / AliTOFHeader.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 //-----------------------------------------------------------------
17 //           Implementation of the Event Time class
18 //           for the Event Data Summary class
19 //           This class contains the Event Time
20 //           as estimated by the TOF combinatorial algorithm
21 // Origin: A.De Caro, decaro@lsa.infn.it
22 //-----------------------------------------------------------------
23
24 //---- standard headers ----
25 #include "Riostream.h"
26 //---- Root headers --------
27 #include "TArrayF.h"
28 #include "TArrayI.h"
29 //---- AliRoot headers -----
30 #include "AliTOFHeader.h"
31
32
33 ClassImp(AliTOFHeader)
34
35 //--------------------------------------------------------------------------
36 AliTOFHeader::AliTOFHeader() :
37   TObject(),
38   fDefaultEventTimeValue(0.),
39   fDefaultEventTimeRes(0.),
40   fNbins(0),
41   fEventTimeValues(new TArrayF(1)),
42   fEventTimeRes(new TArrayF(1)),
43   fNvalues(new TArrayI(1)),
44   fTOFtimeResolution(0.),
45   fT0spread(0.)
46 {
47   //
48   // Default Constructor
49   //
50
51 }
52
53 //--------------------------------------------------------------------------
54 AliTOFHeader::AliTOFHeader(Float_t defEvTime, Float_t defResEvTime,
55                            Int_t nDifPbins, Float_t *times, Float_t *res,
56                            Int_t *nPbin, Float_t tofTimeRes, Float_t t0spread) :
57   TObject(),
58   fDefaultEventTimeValue(defEvTime),
59   fDefaultEventTimeRes(defResEvTime),
60   fNbins(nDifPbins),
61   fEventTimeValues(new TArrayF(nDifPbins)),
62   fEventTimeRes(new TArrayF(nDifPbins)),
63   fNvalues(new TArrayI(nDifPbins)),
64   fTOFtimeResolution(tofTimeRes),
65   fT0spread(t0spread)
66 {
67   //
68   // Constructor for vertex Z from pixels
69   //
70
71   for (Int_t ii=0; ii<fNbins; ii++) {
72     fEventTimeValues->SetAt(times[ii],ii);
73     fEventTimeRes->SetAt(res[ii],ii);
74     fNvalues->SetAt(nPbin[ii],ii);
75   }
76
77 }
78
79 //--------------------------------------------------------------------------
80 AliTOFHeader::AliTOFHeader(const AliTOFHeader &source):
81   TObject(source),
82   fDefaultEventTimeValue(source.fDefaultEventTimeValue),
83   fDefaultEventTimeRes(source.fDefaultEventTimeRes),
84   fNbins(source.fNbins),
85   fEventTimeValues(new TArrayF(fNbins)),
86   fEventTimeRes(new TArrayF(fNbins)),
87   fNvalues(new TArrayI(fNbins)),
88   fTOFtimeResolution(source.fTOFtimeResolution),
89   fT0spread(source.fT0spread)
90 {
91   //
92   // Copy constructor
93   //
94
95
96   for(Int_t i=0;i<fNbins;i++) {
97     fEventTimeValues->SetAt(source.fEventTimeValues->GetAt(i),i);
98     fEventTimeRes->SetAt(source.fEventTimeRes->GetAt(i),i);
99     fNvalues->SetAt(source.fNvalues->GetAt(i),i);
100   }
101
102 }
103 //--------------------------------------------------------------------------
104 AliTOFHeader &AliTOFHeader::operator=(const AliTOFHeader &source){
105   //
106   // assignment operator
107   //
108   if(&source != this){
109     TObject::operator=(source);
110
111     fDefaultEventTimeValue=source.fDefaultEventTimeValue;
112     fDefaultEventTimeRes=source.fDefaultEventTimeRes;
113     fNbins=source.fNbins;
114     fEventTimeValues=new TArrayF(fNbins);
115     fEventTimeRes=new TArrayF(fNbins);
116     fNvalues=new TArrayI(fNbins);
117     fTOFtimeResolution=source.fTOFtimeResolution;
118     fT0spread=source.fT0spread;
119     for(Int_t i=0;i<fNbins;i++) {
120       fEventTimeValues->SetAt(source.fEventTimeValues->GetAt(i),i);
121       fEventTimeRes->SetAt(source.fEventTimeRes->GetAt(i),i);
122       fNvalues->SetAt(source.fNvalues->GetAt(i),i);
123     }
124   }
125   return *this;
126 }
127 //--------------------------------------------------------------------------
128 void AliTOFHeader::Copy(TObject &obj) const {
129   
130   // this overwrites the virtual TOBject::Copy()
131   // to allow run time copying without casting
132   // in AliESDEvent
133
134   if(this==&obj)return;
135   AliTOFHeader *robj = dynamic_cast<AliTOFHeader*>(&obj);
136   if(!robj)return; // not an AliTOFHeader
137   *robj = *this;
138
139 }
140
141 //--------------------------------------------------------------------------
142 AliTOFHeader::~AliTOFHeader()
143 {
144
145   fEventTimeValues->Reset();
146   fEventTimeRes->Reset();
147   fNvalues->Reset();
148
149   delete fEventTimeValues;
150   delete fEventTimeRes;
151   delete fNvalues;
152
153 }
154
155 //--------------------------------------------------------------------------
156 void AliTOFHeader::SetNbins(Int_t nbins)
157 {
158   //
159   //
160   //
161
162   fNbins=nbins;
163   fEventTimeValues->Set(nbins);
164   fEventTimeRes->Set(nbins);
165   fNvalues->Set(nbins);
166
167 }
168 //--------------------------------------------------------------------------
169 void AliTOFHeader::SetEventTimeValues(TArrayF *arr)
170 {
171   //
172   //
173   //
174
175   fNbins=arr->GetSize();
176   fEventTimeValues->Set(arr->GetSize());
177   for (Int_t ii=0; ii<arr->GetSize(); ii++)
178     fEventTimeValues->SetAt(arr->GetAt(ii),ii);
179
180 }
181 //--------------------------------------------------------------------------
182 void AliTOFHeader::SetEventTimeRes(TArrayF *arr)
183 {
184   //
185   //
186   //
187
188   fNbins=arr->GetSize();
189   fEventTimeRes->Set(arr->GetSize());
190   for (Int_t ii=0; ii<arr->GetSize(); ii++)
191     fEventTimeRes->SetAt(arr->GetAt(ii),ii);
192
193 }
194 //--------------------------------------------------------------------------
195 void AliTOFHeader::SetNvalues(TArrayI *arr)
196 {
197   //
198   //
199   //
200
201   fNbins=arr->GetSize();
202   fNvalues->Set(arr->GetSize());
203   for (Int_t ii=0; ii<arr->GetSize(); ii++)
204     fNvalues->SetAt(arr->GetAt(ii),ii);
205
206 }