Correction in AddTriggerIR()
[u/mrichter/AliRoot.git] / STEER / AliESDHeader.cxx
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  **************************************************************************/
15
16 //-------------------------------------------------------------------------
17 //                      Implementation of   Class AliESDHeader
18 //   Header data
19 //   for the ESD   
20 //   Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch 
21 //-------------------------------------------------------------------------
22
23 #include "AliESDHeader.h"
24 #include "AliTriggerScalersESD.h"
25 #include "AliTriggerScalersRecordESD.h"
26 #include "AliTriggerIR.h"
27 #include "AliLog.h" 
28
29 ClassImp(AliESDHeader)
30
31 //______________________________________________________________________________
32 AliESDHeader::AliESDHeader() :
33   AliVHeader(),
34   fTriggerMask(0),
35   fOrbitNumber(0),
36   fTimeStamp(0),
37   fEventType(0),
38   fPeriodNumber(0),
39   fEventNumberInFile(0),
40   fBunchCrossNumber(0),
41   fTriggerCluster(0),
42   fL0TriggerInputs(0),
43   fL1TriggerInputs(0),
44   fL2TriggerInputs(0),
45   fTriggerScalers(),
46   fIRArray(0)
47 {
48   // default constructor
49
50   SetName("AliESDHeader");
51   fIRArray = new AliTriggerIR *[kNMaxIR];
52   for(Int_t i = 0; i<kNMaxIR ; i++) fIRArray[i] = 0;
53
54 }
55 AliESDHeader::~AliESDHeader() 
56 {
57   // destructor
58   for(Int_t i=0;i<kNMaxIR;i++)if(fIRArray[i])delete fIRArray[i];
59 }
60
61
62 AliESDHeader::AliESDHeader(const AliESDHeader &header) :
63   AliVHeader(header),
64   fTriggerMask(header.fTriggerMask),
65   fOrbitNumber(header.fOrbitNumber),
66   fTimeStamp(header.fTimeStamp),
67   fEventType(header.fEventType),
68   fPeriodNumber(header.fPeriodNumber),
69   fEventNumberInFile(header.fEventNumberInFile),
70   fBunchCrossNumber(header.fBunchCrossNumber),
71   fTriggerCluster(header.fTriggerCluster),
72   fL0TriggerInputs(header.fL0TriggerInputs),
73   fL1TriggerInputs(header.fL1TriggerInputs),
74   fL2TriggerInputs(header.fL2TriggerInputs),
75   fTriggerScalers(header.fTriggerScalers),
76   fIRArray(0)
77 {
78   // copy constructor
79   SetName(header.fName);
80   SetTitle(header.fTitle);
81   fIRArray = new AliTriggerIR *[kNMaxIR];
82   for(Int_t i = 0; i<kNMaxIR ; i++) {
83     if(header.fIRArray[i])fIRArray[i] = new AliTriggerIR(*header.fIRArray[i]);
84     else fIRArray[i]=0;
85   }
86 }
87
88 AliESDHeader& AliESDHeader::operator=(const AliESDHeader &header)
89
90   // assigment operator
91   if(this!=&header) {
92     AliVHeader::operator=(header);
93     fTriggerMask = header.fTriggerMask;
94     fOrbitNumber = header.fOrbitNumber;
95     fTimeStamp = header.fTimeStamp;
96     fEventType = header.fEventType;
97     fPeriodNumber = header.fPeriodNumber;
98     fEventNumberInFile = header.fEventNumberInFile;
99     fBunchCrossNumber = header.fBunchCrossNumber;
100     fTriggerCluster = header.fTriggerCluster;
101     fL0TriggerInputs = header.fL0TriggerInputs;
102     fL1TriggerInputs = header.fL1TriggerInputs;
103     fL2TriggerInputs = header.fL2TriggerInputs;
104     fTriggerScalers = header.fTriggerScalers;
105     fIRArray = new AliTriggerIR *[kNMaxIR];
106     for(Int_t i = 0; i<kNMaxIR ; i++) {
107        if(header.fIRArray[i])fIRArray[i] = new AliTriggerIR(*header.fIRArray[i]);
108        else fIRArray[i]=0;
109     }
110     SetName(header.fName);
111     SetTitle(header.fTitle);
112
113   } 
114   return *this;
115 }
116
117 void AliESDHeader::Copy(TObject &obj) const 
118 {  
119   // this overwrites the virtual TOBject::Copy()
120   // to allow run time copying without casting
121   // in AliESDEvent
122
123   if(this==&obj)return;
124   AliESDHeader *robj = dynamic_cast<AliESDHeader*>(&obj);
125   if(!robj)return; // not an AliESDHeader
126   *robj = *this;
127
128 }
129 //______________________________________________________________________________
130 void AliESDHeader::Reset()
131 {
132   // reset all data members
133   fTriggerMask       = 0;
134   fOrbitNumber       = 0;
135   fTimeStamp         = 0;
136   fEventType         = 0;
137   fPeriodNumber      = 0;
138   fEventNumberInFile = 0;
139   fBunchCrossNumber  = 0;
140   fTriggerCluster    = 0;
141   fL0TriggerInputs   = 0;
142   fL1TriggerInputs   = 0;
143   fL2TriggerInputs   = 0;
144   fTriggerScalers.Reset();
145   for(Int_t i=0;i<kNMaxIR;i++)if(fIRArray[i]){
146    delete fIRArray[i];
147    fIRArray[i]=0;
148   }
149 }
150 //______________________________________________________________________________
151 Bool_t AliESDHeader::AddTriggerIR(const AliTriggerIR* ir)
152 {
153  // Adds trigger interaction record to array
154  for(Int_t i=0;i<kNMaxIR;i++){
155   if(!fIRArray[i]){
156     fIRArray[i]=const_cast<AliTriggerIR*>(ir);
157     return 0;
158   }
159  }
160  //AliErrorClass("Attempt to add # of IRs > kNMaxIR \n");
161  return 1;
162 }
163 //______________________________________________________________________________
164 void AliESDHeader::Print(const Option_t *) const
165 {
166   // Print some data members
167   printf("Event # %d in file Bunch crossing # %d Orbit # %d Trigger %lld \n",
168          GetEventNumberInFile(),
169          GetBunchCrossNumber(),
170          GetOrbitNumber(),
171          GetTriggerMask());
172 }
173