1 /**************************************************************************
2 * Copyright(c) 1998-1999, 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 **************************************************************************/
17 #include "AliESDRun.h"
18 #include "AliESDVertex.h"
21 //-------------------------------------------------------------------------
22 // Implementation Class AliESDRun
25 // Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch
26 //-------------------------------------------------------------------------
30 //______________________________________________________________________________
31 AliESDRun::AliESDRun() :
37 fTriggerClasses(kNTriggerClasses)
39 for (Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
40 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=0.;
41 fTriggerClasses.SetOwner(kTRUE);
44 //______________________________________________________________________________
45 AliESDRun::AliESDRun(const AliESDRun &esd) :
47 fMagneticField(esd.fMagneticField),
48 fPeriodNumber(esd.fPeriodNumber),
49 fRunNumber(esd.fRunNumber),
50 fRecoVersion(esd.fRecoVersion),
51 fTriggerClasses(TObjArray(kNTriggerClasses))
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];
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);
63 //______________________________________________________________________________
64 AliESDRun& AliESDRun::operator=(const AliESDRun &esd)
68 TObject::operator=(esd);
69 fRunNumber=esd.fRunNumber;
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);
84 void AliESDRun::SetDiamond(const AliESDVertex *vertex) {
85 // set the interaction diamond
86 fDiamondXY[0]=vertex->GetXv();
87 fDiamondXY[1]=vertex->GetYv();
89 vertex->GetCovMatrix(cov);
90 fDiamondCovXY[0]=cov[0];
91 fDiamondCovXY[1]=cov[1];
92 fDiamondCovXY[2]=cov[2];
96 //______________________________________________________________________________
97 void AliESDRun::Print(const Option_t *) const
99 // Print some data members
100 printf("Mean vertex in RUN %d: X=%.4f Y=%.4f cm\n",
101 GetRunNumber(),GetDiamondX(),GetDiamondY());
102 printf("Magnetic field = %f T\n",
104 printf("Event from reconstruction version %d \n",fRecoVersion);
106 printf("List of active trigger classes: ");
107 for(Int_t i = 0; i < kNTriggerClasses; i++) {
108 TNamed *str = (TNamed *)((fTriggerClasses).At(i));
109 printf("%s ",str->GetName());
114 void AliESDRun::Reset()
116 // reset data members
121 for (Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
122 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=0.;
123 fTriggerClasses.Clear();
126 //______________________________________________________________________________
127 void AliESDRun::SetTriggerClass(const char*name, Int_t index)
129 // Fill the trigger class name
130 // into the corresponding array
131 if (index >= kNTriggerClasses || index < 0) {
132 AliError(Form("Index (%d) is outside the allowed range (0,49)!",index));
136 fTriggerClasses.AddAt(new TNamed(name,NULL),index);
139 //______________________________________________________________________________
140 const char* AliESDRun::GetTriggerClass(Int_t index) const
142 // Get the trigger class name at
143 // specified position in the trigger mask
144 TNamed *trclass = (TNamed *)fTriggerClasses.At(index);
146 return trclass->GetName();
151 //______________________________________________________________________________
152 TString AliESDRun::GetActiveTriggerClasses() const
154 // Construct and return
155 // the list of trigger classes
156 // which are present in the run
158 for(Int_t i = 0; i < kNTriggerClasses; i++) {
159 TNamed *str = (TNamed *)((fTriggerClasses).At(i));
162 trclasses += str->GetName();
170 //______________________________________________________________________________
171 TString AliESDRun::GetFiredTriggerClasses(ULong64_t mask) const
173 // Constructs and returns the
174 // list of trigger classes that
175 // have been fired. Uses the trigger
176 // class mask as an argument.
178 for(Int_t i = 0; i < kNTriggerClasses; i++) {
179 if (mask & (1 << i)) {
180 TNamed *str = (TNamed *)((fTriggerClasses).At(i));
183 trclasses += str->GetName();
192 //______________________________________________________________________________
193 Bool_t AliESDRun::IsTriggerClassFired(ULong64_t mask, const char *name) const
195 // Checks if the trigger class
196 // identified by 'name' has been
197 // fired. Uses the trigger class mask.
199 TNamed *trclass = (TNamed *)fTriggerClasses.FindObject(name);
200 if (!trclass) return kFALSE;
202 Int_t iclass = fTriggerClasses.IndexOf(trclass);
203 if (iclass < 0) return kFALSE;
205 if (mask & (1 << iclass))