e588bb52162f43de845ca66ae57200ab456fefec
[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
28 ClassImp(AliESDHeader)
29
30 //______________________________________________________________________________
31 AliESDHeader::AliESDHeader() :
32   AliVHeader(),
33   fTriggerMask(0),
34   fOrbitNumber(0),
35   fTimeStamp(0),
36   fEventType(0),
37   fPeriodNumber(0),
38   fEventNumberInFile(0),
39   fBunchCrossNumber(0),
40   fTriggerCluster(0),
41   fL0TriggerInputs(0),
42   fL1TriggerInputs(0),
43   fL2TriggerInputs(0),
44   fTriggerScalers(),
45   fIRArray("AliTriggerIR",3)
46 {
47   // default constructor
48
49   SetName("AliESDHeader");
50 }
51 AliESDHeader::~AliESDHeader() 
52 {
53   // destructor
54 }
55
56
57 AliESDHeader::AliESDHeader(const AliESDHeader &header) :
58   AliVHeader(header),
59   fTriggerMask(header.fTriggerMask),
60   fOrbitNumber(header.fOrbitNumber),
61   fTimeStamp(header.fTimeStamp),
62   fEventType(header.fEventType),
63   fPeriodNumber(header.fPeriodNumber),
64   fEventNumberInFile(header.fEventNumberInFile),
65   fBunchCrossNumber(header.fBunchCrossNumber),
66   fTriggerCluster(header.fTriggerCluster),
67   fL0TriggerInputs(header.fL0TriggerInputs),
68   fL1TriggerInputs(header.fL1TriggerInputs),
69   fL2TriggerInputs(header.fL2TriggerInputs),
70   fTriggerScalers(header.fTriggerScalers),
71   fIRArray(*((TClonesArray*)header.fIRArray.Clone()))
72 {
73   // copy constructor
74   SetName(header.fName);
75   SetTitle(header.fTitle);
76 }
77
78 AliESDHeader& AliESDHeader::operator=(const AliESDHeader &header)
79
80   // assigment operator
81   if(this!=&header) {
82     AliVHeader::operator=(header);
83     fTriggerMask = header.fTriggerMask;
84     fOrbitNumber = header.fOrbitNumber;
85     fTimeStamp = header.fTimeStamp;
86     fEventType = header.fEventType;
87     fPeriodNumber = header.fPeriodNumber;
88     fEventNumberInFile = header.fEventNumberInFile;
89     fBunchCrossNumber = header.fBunchCrossNumber;
90     fTriggerCluster = header.fTriggerCluster;
91     fL0TriggerInputs = header.fL0TriggerInputs;
92     fL1TriggerInputs = header.fL1TriggerInputs;
93     fL2TriggerInputs = header.fL2TriggerInputs;
94     fTriggerScalers = header.fTriggerScalers;
95     fIRArray = header.fIRArray;
96     SetName(header.fName);
97     SetTitle(header.fTitle);
98
99   } 
100   return *this;
101 }
102
103 void AliESDHeader::Copy(TObject &obj) const 
104 {  
105   // this overwrites the virtual TOBject::Copy()
106   // to allow run time copying without casting
107   // in AliESDEvent
108
109   if(this==&obj)return;
110   AliESDHeader *robj = dynamic_cast<AliESDHeader*>(&obj);
111   if(!robj)return; // not an AliESDHeader
112   *robj = *this;
113
114 }
115 //______________________________________________________________________________
116 void AliESDHeader::Reset()
117 {
118   // reset all data members
119   fTriggerMask       = 0;
120   fOrbitNumber       = 0;
121   fTimeStamp         = 0;
122   fEventType         = 0;
123   fPeriodNumber      = 0;
124   fEventNumberInFile = 0;
125   fBunchCrossNumber  = 0;
126   fTriggerCluster    = 0;
127   fL0TriggerInputs   = 0;
128   fL1TriggerInputs   = 0;
129   fL2TriggerInputs   = 0;
130   fTriggerScalers.Reset();
131   fIRArray.Clear();
132 }
133 //______________________________________________________________________________
134 void AliESDHeader::AddTriggerIR(const AliTriggerIR* ir)
135 {
136  // Adds trigger interaction record to array
137  new(fIRArray[fIRArray.GetEntriesFast()]) AliTriggerIR(*ir);
138 }
139 //______________________________________________________________________________
140 void AliESDHeader::Print(const Option_t *) const
141 {
142   // Print some data members
143   printf("Event # %d in file Bunch crossing # %d Orbit # %d Trigger %lld \n",
144          GetEventNumberInFile(),
145          GetBunchCrossNumber(),
146          GetOrbitNumber(),
147          GetTriggerMask());
148 }
149