fRunNumber(0),
fnClasses(0),
fClassIndex(),
- fScalersRecord()
+ fScalersRecord(),
+ fScalersRecordESD()
{
// Default constructor
}
if (!AliTriggerRunScalers::ConsistencyCheck()) AliErrorClass("Trigger counters not in the right order or decreasing!");
// fScalersRecord.Sort();
}
+//_____________________________________________________________________________
+
+AliTriggerRunScalers::AliTriggerRunScalers(const AliTriggerRunScalers &run) :
+ TObject(),
+ fVersion(run.fVersion),
+ fRunNumber(run.fRunNumber),
+ fnClasses(run.fnClasses),
+ fClassIndex(),
+ fScalersRecord(),
+ fScalersRecordESD()
+{
+// copy constructor
+for (Int_t i = 0; i < run.fClassIndex.GetSize(); i++) {
+ if (run.fClassIndex[i]) fClassIndex.AddAt(run.fClassIndex[i], i);
+ }
+for (Int_t i = 0; i < run.fScalersRecord.GetEntriesFast(); i++) {
+ if (run.fScalersRecord[i]) fScalersRecord.Add(run.fScalersRecord[i]->Clone());
+ }
+for (Int_t i = 0; i < run.fScalersRecordESD.GetEntriesFast(); i++) {
+ if (run.fScalersRecordESD[i]) fScalersRecordESD.Add(run.fScalersRecordESD[i]->Clone());
+ }
+
+}
+//_____________________________________________________________________________
+AliTriggerRunScalers &AliTriggerRunScalers::operator=(const AliTriggerRunScalers& run)
+{
+// assignment operator
+if(&run == this) return *this;
+((TObject *)this)->operator=(run);
+
+fVersion = run.fVersion;
+fRunNumber = run.fRunNumber;
+fnClasses = run.fnClasses;
+for (Int_t i = 0; i < run.fClassIndex.GetSize(); i++) {
+ if (run.fClassIndex[i]) fClassIndex.AddAt(run.fClassIndex[i], i);
+ }
+for (Int_t i = 0; i < run.fScalersRecord.GetEntriesFast(); i++) {
+ if (run.fScalersRecord[i]) fScalersRecord.Add(run.fScalersRecord[i]->Clone());
+ }
+for (Int_t i = 0; i < run.fScalersRecordESD.GetEntriesFast(); i++) {
+ if (run.fScalersRecordESD[i]) fScalersRecordESD.Add(run.fScalersRecordESD[i]->Clone());
+ }
+return *this;
+}
//_____________________________________________________________________________
AliTriggerRunScalers* AliTriggerRunScalers::ReadScalers( TString & filename )
{
return (result < 0 ) ? position-1 : position; // nearst < stamp
}
//_____________________________________________________________________________
-Bool_t AliTriggerRunScalers::ConsistencyCheck()
+Bool_t AliTriggerRunScalers::ConsistencyCheck() const
{
//Check if counters are consistent(increase). Example: lOCB(n) < lOCB(n+1) and lOCB > lOCA
UInt_t lOCBtwo, lOCAtwo, l1CBtwo, l1CAtwo, l2CBtwo, l2CAtwo, lOCBone, lOCAone, l1CBone, l1CAone, l2CBone, l2CAone;
const TObjArray* GetScalersRecords() const { return &fScalersRecord; }
AliTriggerScalersRecord* GetScalersRecord( Int_t index ) const { return (AliTriggerScalersRecord*)fScalersRecord.At(index); }
Int_t FindNearestScalersRecord( const AliTimeStamp *stamp ) const;
- Bool_t ConsistencyCheck();
+ Bool_t ConsistencyCheck() const;
// Setters
void SetVersion( Short_t ver ) { fVersion = ver; }
void SetRunNumber( ULong_t run ) { fRunNumber = run; }
void SetClass( UChar_t i, UChar_t index ) { fClassIndex[i]=index; }
void AddTriggerScalers( AliTriggerScalersRecord* scal );
virtual void Print( const Option_t* opt ="" ) const;
-
+ AliTriggerRunScalers( const AliTriggerRunScalers &run );
+ AliTriggerRunScalers& operator=(const AliTriggerRunScalers& run);
static AliTriggerRunScalers* ReadScalers( TString & filename );
-
private:
Short_t fVersion; // Version
ULong_t fRunNumber; // Run number
UChar_t fnClasses; // Number of trigger classes
TArrayC fClassIndex; // list of classes used in this partition
TObjArray fScalersRecord; // Array of records (AliTriggerScalersRecord)
+ TObjArray fScalersRecordESD; // Array of records with 64bit scalers (AliTriggerScalersRecordESD)
+
- // AliTriggerRunScalers( const AliTriggerRunScalers &run );
- AliTriggerRunScalers& operator=(const AliTriggerRunScalers& run);
- ClassDef( AliTriggerRunScalers, 1 ) // Define a Run Trigger Scalers (Scalers)
+ ClassDef( AliTriggerRunScalers, 2 ) // Define a Run Trigger Scalers (Scalers)
};
#endif