1 /**************************************************************************
2 * Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
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@sa.infn.it
22 //-----------------------------------------------------------------
24 //---- standard headers ----
25 #include "Riostream.h"
26 //---- Root headers --------
29 //---- AliRoot headers -----
30 #include "AliTOFHeader.h"
33 ClassImp(AliTOFHeader)
35 //--------------------------------------------------------------------------
36 AliTOFHeader::AliTOFHeader() :
38 fDefaultEventTimeValue(0.),
39 fDefaultEventTimeRes(0.),
44 fTOFtimeResolution(0.),
46 fNumberOfTOFclusters(-1),
47 fNumberOfTOFtrgPads(-1),
48 fTrigMask(new AliTOFTriggerMask())
51 // Default Constructor
56 //--------------------------------------------------------------------------
57 AliTOFHeader::AliTOFHeader(Float_t defEvTime, Float_t defResEvTime,
58 Int_t nDifPbins, Float_t *times, Float_t *res,
59 Int_t *nPbin, Float_t tofTimeRes, Float_t t0spread) :
61 fDefaultEventTimeValue(defEvTime),
62 fDefaultEventTimeRes(defResEvTime),
67 fTOFtimeResolution(tofTimeRes),
69 fNumberOfTOFclusters(-1),
70 fNumberOfTOFtrgPads(-1),
71 fTrigMask(new AliTOFTriggerMask())
74 // Constructor for TOF header
78 fEventTimeValues = new TArrayF(fNbins);
79 fEventTimeRes = new TArrayF(fNbins);
80 fNvalues = new TArrayI(fNbins);
81 for (Int_t ii=0; ii<fNbins; ii++) {
82 fEventTimeValues->SetAt(times[ii],ii);
83 fEventTimeRes->SetAt(res[ii],ii);
84 fNvalues->SetAt(nPbin[ii],ii);
90 //--------------------------------------------------------------------------
91 AliTOFHeader::AliTOFHeader(const AliTOFHeader &source):
93 fDefaultEventTimeValue(source.fDefaultEventTimeValue),
94 fDefaultEventTimeRes(source.fDefaultEventTimeRes),
95 fNbins(source.fNbins),
99 fTOFtimeResolution(source.fTOFtimeResolution),
100 fT0spread(source.fT0spread),
101 fNumberOfTOFclusters(source.fNumberOfTOFclusters),
102 fNumberOfTOFtrgPads(source.fNumberOfTOFtrgPads),
110 fEventTimeValues = new TArrayF(fNbins);
111 fEventTimeRes = new TArrayF(fNbins);
112 fNvalues = new TArrayI(fNbins);
113 for(Int_t i=0;i<fNbins;i++) {
114 (*fEventTimeValues)[i]=source.fEventTimeValues->At(i);
115 (*fEventTimeRes)[i]=source.fEventTimeRes->At(i);
116 (*fNvalues)[i]=source.fNvalues->At(i);
120 if(source.fTrigMask) fTrigMask = new AliTOFTriggerMask(*(source.fTrigMask));
121 else fTrigMask = new AliTOFTriggerMask();
123 //--------------------------------------------------------------------------
124 AliTOFHeader &AliTOFHeader::operator=(const AliTOFHeader &source){
126 // assignment operator
129 TObject::operator=(source);
131 fDefaultEventTimeValue=source.fDefaultEventTimeValue;
132 fDefaultEventTimeRes=source.fDefaultEventTimeRes;
133 fNbins=source.fNbins;
134 fTOFtimeResolution=source.fTOFtimeResolution;
135 fT0spread=source.fT0spread;
136 fNumberOfTOFclusters=source.fNumberOfTOFclusters;
137 fNumberOfTOFtrgPads=source.fNumberOfTOFtrgPads;
140 fEventTimeValues = new TArrayF(fNbins);
141 fEventTimeRes = new TArrayF(fNbins);
142 fNvalues = new TArrayI(fNbins);
143 for(Int_t i=0;i<fNbins;i++) {
144 (*fEventTimeValues)[i]=source.fEventTimeValues->At(i);
145 (*fEventTimeRes)[i]=source.fEventTimeRes->At(i);
146 (*fNvalues)[i]=source.fNvalues->At(i);
149 fEventTimeValues = 0;
154 if(source.fTrigMask && fTrigMask) *fTrigMask = *(source.fTrigMask);
155 else if(! fTrigMask) fTrigMask = new AliTOFTriggerMask();
159 //--------------------------------------------------------------------------
160 void AliTOFHeader::Copy(TObject &obj) const {
162 // this overwrites the virtual TOBject::Copy()
163 // to allow run time copying without casting
166 if (this==&obj) return;
167 AliTOFHeader *robj = dynamic_cast<AliTOFHeader*>(&obj);
168 if (!robj) return; // not an AliTOFHeader
173 //--------------------------------------------------------------------------
174 AliTOFHeader::~AliTOFHeader()
178 if (fEventTimeValues) {
179 delete fEventTimeValues;
183 delete fEventTimeRes;
197 //--------------------------------------------------------------------------
198 void AliTOFHeader::SetNbins(Int_t nbins)
205 if (!fEventTimeValues)
206 fEventTimeValues = new TArrayF(nbins);
208 fEventTimeValues->Set(nbins);
211 fEventTimeRes = new TArrayF(nbins);
213 fEventTimeRes->Set(nbins);
216 fNvalues = new TArrayI(nbins);
218 fNvalues->Set(nbins);
221 //--------------------------------------------------------------------------
222 void AliTOFHeader::SetEventTimeValues(TArrayF *arr)
228 fNbins=arr->GetSize();
230 if (!fEventTimeValues)
231 fEventTimeValues = new TArrayF(fNbins);
233 fEventTimeValues->Set(fNbins);
235 for (Int_t ii=0; ii<fNbins; ii++)
236 fEventTimeValues->SetAt(arr->GetAt(ii),ii);
239 //--------------------------------------------------------------------------
240 void AliTOFHeader::SetEventTimeRes(TArrayF *arr)
246 fNbins=arr->GetSize();
249 fEventTimeRes = new TArrayF(fNbins);
251 fEventTimeRes->Set(fNbins);
253 for (Int_t ii=0; ii<fNbins; ii++)
254 fEventTimeRes->SetAt(arr->GetAt(ii),ii);
257 //--------------------------------------------------------------------------
258 void AliTOFHeader::SetNvalues(TArrayI *arr)
264 fNbins=arr->GetSize();
267 fNvalues = new TArrayI(fNbins);
269 fNvalues->Set(fNbins);
271 for (Int_t ii=0; ii<fNbins; ii++)
272 fNvalues->SetAt(arr->GetAt(ii),ii);