Use default value in case of missing gain map.
[u/mrichter/AliRoot.git] / STEER / AliESDRun.cxx
CommitLineData
d5ebf00e 1/**************************************************************************
2 * Copyright(c) 1998-1999, 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 **************************************************************************/
f009b5c1 15#include <TNamed.h>
d5ebf00e 16
17#include "AliESDRun.h"
18#include "AliESDVertex.h"
f009b5c1 19#include "AliLog.h"
d5ebf00e 20
21//-------------------------------------------------------------------------
22// Implementation Class AliESDRun
23// Run by run data
24// for the ESD
25// Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch
26//-------------------------------------------------------------------------
27
28ClassImp(AliESDRun)
29
30//______________________________________________________________________________
31AliESDRun::AliESDRun() :
694aad0c 32 TObject(),
33 fMagneticField(0),
d5ebf00e 34 fPeriodNumber(0),
694aad0c 35 fRunNumber(0),
f009b5c1 36 fRecoVersion(0),
37 fTriggerClasses(kNTriggerClasses)
d5ebf00e 38{
39 for (Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
40 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=0.;
f009b5c1 41 fTriggerClasses.SetOwner(kTRUE);
d5ebf00e 42}
43
44//______________________________________________________________________________
45AliESDRun::AliESDRun(const AliESDRun &esd) :
46 TObject(esd),
694aad0c 47 fMagneticField(esd.fMagneticField),
d5ebf00e 48 fPeriodNumber(esd.fPeriodNumber),
694aad0c 49 fRunNumber(esd.fRunNumber),
f009b5c1 50 fRecoVersion(esd.fRecoVersion),
51 fTriggerClasses(TObjArray(kNTriggerClasses))
d5ebf00e 52{
53 // Copy constructor
54 for (Int_t i=0; i<2; i++) fDiamondXY[i]=esd.fDiamondXY[i];
55 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=esd.fDiamondCovXY[i];
f009b5c1 56
57 for(Int_t i = 0; i < kNTriggerClasses; i++) {
58 TNamed *str = (TNamed *)((esd.fTriggerClasses).At(i));
59 if (str) fTriggerClasses.AddAt(new TNamed(*str),i);
60 }
d5ebf00e 61}
62
63//______________________________________________________________________________
64AliESDRun& AliESDRun::operator=(const AliESDRun &esd)
65{
66 // assigment operator
67 if(this!=&esd) {
68 TObject::operator=(esd);
69 fRunNumber=esd.fRunNumber;
732a24fe 70 fPeriodNumber=esd.fPeriodNumber;
71 fRecoVersion=esd.fRecoVersion;
72 fMagneticField=esd.fMagneticField;
73 for (Int_t i=0; i<2; i++) fDiamondXY[i]=esd.fDiamondXY[i];
74 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=esd.fDiamondCovXY[i];
75 fTriggerClasses.Clear();
76 for(Int_t i = 0; i < kNTriggerClasses; i++) {
77 TNamed *str = (TNamed *)((esd.fTriggerClasses).At(i));
78 if (str) fTriggerClasses.AddAt(new TNamed(*str),i);
79 }
80
d5ebf00e 81 }
82 return *this;
83}
84
732a24fe 85void AliESDRun::Copy(TObject &obj) const{
86
87 // this overwrites the virtual TOBject::Copy()
88 // to allow run time copying without casting
89 // in AliESDEvent
90
91 if(this==&obj)return;
92 AliESDRun *robj = dynamic_cast<AliESDRun*>(&obj);
93 if(!robj)return; // not an aliesdrun
94 *robj = *this;
95
96}
97
d5ebf00e 98void AliESDRun::SetDiamond(const AliESDVertex *vertex) {
99 // set the interaction diamond
100 fDiamondXY[0]=vertex->GetXv();
101 fDiamondXY[1]=vertex->GetYv();
102 Double32_t cov[6];
103 vertex->GetCovMatrix(cov);
104 fDiamondCovXY[0]=cov[0];
105 fDiamondCovXY[1]=cov[1];
106 fDiamondCovXY[2]=cov[2];
107}
108
109
110//______________________________________________________________________________
111void AliESDRun::Print(const Option_t *) const
112{
113 // Print some data members
114 printf("Mean vertex in RUN %d: X=%.4f Y=%.4f cm\n",
115 GetRunNumber(),GetDiamondX(),GetDiamondY());
116 printf("Magnetic field = %f T\n",
117 GetMagneticField());
118 printf("Event from reconstruction version %d \n",fRecoVersion);
f009b5c1 119
120 printf("List of active trigger classes: ");
121 for(Int_t i = 0; i < kNTriggerClasses; i++) {
122 TNamed *str = (TNamed *)((fTriggerClasses).At(i));
123 printf("%s ",str->GetName());
124 }
125 printf("\n");
d5ebf00e 126}
127
128void AliESDRun::Reset()
129{
130 // reset data members
131 fRunNumber = 0;
132 fPeriodNumber = 0;
133 fRecoVersion = 0;
134 fMagneticField = 0;
135 for (Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
136 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=0.;
f009b5c1 137 fTriggerClasses.Clear();
138}
139
140//______________________________________________________________________________
141void AliESDRun::SetTriggerClass(const char*name, Int_t index)
142{
143 // Fill the trigger class name
144 // into the corresponding array
145 if (index >= kNTriggerClasses || index < 0) {
146 AliError(Form("Index (%d) is outside the allowed range (0,49)!",index));
147 return;
148 }
149
150 fTriggerClasses.AddAt(new TNamed(name,NULL),index);
151}
152
153//______________________________________________________________________________
154const char* AliESDRun::GetTriggerClass(Int_t index) const
155{
156 // Get the trigger class name at
157 // specified position in the trigger mask
158 TNamed *trclass = (TNamed *)fTriggerClasses.At(index);
159 if (trclass)
160 return trclass->GetName();
161 else
162 return "";
163}
164
165//______________________________________________________________________________
166TString AliESDRun::GetActiveTriggerClasses() const
167{
168 // Construct and return
169 // the list of trigger classes
170 // which are present in the run
171 TString trclasses;
172 for(Int_t i = 0; i < kNTriggerClasses; i++) {
173 TNamed *str = (TNamed *)((fTriggerClasses).At(i));
174 if (str) {
175 trclasses += " ";
176 trclasses += str->GetName();
177 trclasses += " ";
178 }
179 }
180
181 return trclasses;
182}
183
184//______________________________________________________________________________
185TString AliESDRun::GetFiredTriggerClasses(ULong64_t mask) const
186{
187 // Constructs and returns the
188 // list of trigger classes that
189 // have been fired. Uses the trigger
190 // class mask as an argument.
191 TString trclasses;
192 for(Int_t i = 0; i < kNTriggerClasses; i++) {
2c736180 193 if (mask & (1 << i)) {
f009b5c1 194 TNamed *str = (TNamed *)((fTriggerClasses).At(i));
195 if (str) {
196 trclasses += " ";
197 trclasses += str->GetName();
198 trclasses += " ";
199 }
200 }
201 }
202
203 return trclasses;
d5ebf00e 204}
205
f009b5c1 206//______________________________________________________________________________
207Bool_t AliESDRun::IsTriggerClassFired(ULong64_t mask, const char *name) const
208{
209 // Checks if the trigger class
210 // identified by 'name' has been
211 // fired. Uses the trigger class mask.
212
213 TNamed *trclass = (TNamed *)fTriggerClasses.FindObject(name);
214 if (!trclass) return kFALSE;
215
216 Int_t iclass = fTriggerClasses.IndexOf(trclass);
217 if (iclass < 0) return kFALSE;
218
2c736180 219 if (mask & (1 << iclass))
f009b5c1 220 return kTRUE;
221 else
222 return kFALSE;
223}