ROOT logo
/*************************************************************************
* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  * 
**************************************************************************/


#include <Riostream.h>
#include <TObjArray.h>
#include <AliTimeStamp.h>
#include "AliLog.h"  
#include "AliTriggerScalersESD.h"
#include "AliTriggerScalersRecordESD.h"

using std::endl;
using std::cout;
ClassImp( AliTriggerScalersRecordESD )
//_____________________________________________________________________________
AliTriggerScalersRecordESD::AliTriggerScalersRecordESD():
TObject(),
fTimestamp(),
fScalers(),
fTimeGroup(0)
{
}

//_____________________________________________________________________________
void AliTriggerScalersRecordESD::AddTriggerScalers( AliTriggerScalersESD* scaler ) 
{ 
  fScalers.AddLast( scaler ); 
}

//_____________________________________________________________________________
void AliTriggerScalersRecordESD::AddTriggerScalers( UChar_t classIndex, ULong64_t LOCB, ULong64_t LOCA,        
                                         ULong64_t L1CB, ULong64_t L1CA, ULong64_t L2CB, ULong64_t L2CA )
{
    AddTriggerScalers( new AliTriggerScalersESD( classIndex, LOCB, LOCA, L1CB, L1CA, L2CB, L2CA ) );
} 

//_____________________________________________________________________________
AliTriggerScalersRecordESD::AliTriggerScalersRecordESD( const AliTriggerScalersRecordESD &rec ) :
TObject(rec),
fTimestamp(rec.fTimestamp),
fScalers(),
fTimeGroup(rec.fTimeGroup)
{
//copy constructor
for (Int_t i = 0; i < rec.fScalers.GetEntriesFast(); i++) {
    if (rec.fScalers[i]) fScalers.Add(rec.fScalers[i]->Clone());
  }
}
//_____________________________________________________________________________
AliTriggerScalersRecordESD& AliTriggerScalersRecordESD:: operator=(const AliTriggerScalersRecordESD& rec)
{
//asignment operator
if(&rec == this) return *this;
((TObject *)this)->operator=(rec);
fTimestamp=rec.fTimestamp;
fScalers.Delete();
for (Int_t i = 0; i < rec.fScalers.GetEntriesFast(); i++) {
    if (rec.fScalers[i]) fScalers.Add(rec.fScalers[i]->Clone());
  }
fTimeGroup=rec.fTimeGroup;
return *this;
} 

//_____________________________________________________________________________
void AliTriggerScalersRecordESD::Reset()
{
fScalers.SetOwner();
fScalers.Clear();
fTimeGroup=0;
} 

//_____________________________________________________________________________
const AliTriggerScalersESD* AliTriggerScalersRecordESD::GetTriggerScalersForClass( const Int_t classindex ) const
{
   // Find Trigger scaler with class ID = classmask using a binary search. 

   Int_t   base, last;
   AliTriggerScalersESD *op2 = NULL;
   
   base = 0;
   last = fScalers.GetEntriesFast();

   while (base < last) {
      op2 = (AliTriggerScalersESD *)fScalers.At(base);
      if( op2->GetClassIndex()  == classindex ) return op2;
      base++;
   }
   return op2;   
}
                                      
//_____________________________________________________________________________
void AliTriggerScalersRecordESD::Print( const Option_t* ) const
{
   // Print
  cout << "Trigger Scalers Record, time group: "<< fTimeGroup << endl;
  fTimestamp.Print();
  for( Int_t i=0; i<fScalers.GetEntriesFast(); ++i ) 
     ((AliTriggerScalersESD*)fScalers.At(i))->Print();
}
 AliTriggerScalersRecordESD.cxx:1
 AliTriggerScalersRecordESD.cxx:2
 AliTriggerScalersRecordESD.cxx:3
 AliTriggerScalersRecordESD.cxx:4
 AliTriggerScalersRecordESD.cxx:5
 AliTriggerScalersRecordESD.cxx:6
 AliTriggerScalersRecordESD.cxx:7
 AliTriggerScalersRecordESD.cxx:8
 AliTriggerScalersRecordESD.cxx:9
 AliTriggerScalersRecordESD.cxx:10
 AliTriggerScalersRecordESD.cxx:11
 AliTriggerScalersRecordESD.cxx:12
 AliTriggerScalersRecordESD.cxx:13
 AliTriggerScalersRecordESD.cxx:14
 AliTriggerScalersRecordESD.cxx:15
 AliTriggerScalersRecordESD.cxx:16
 AliTriggerScalersRecordESD.cxx:17
 AliTriggerScalersRecordESD.cxx:18
 AliTriggerScalersRecordESD.cxx:19
 AliTriggerScalersRecordESD.cxx:20
 AliTriggerScalersRecordESD.cxx:21
 AliTriggerScalersRecordESD.cxx:22
 AliTriggerScalersRecordESD.cxx:23
 AliTriggerScalersRecordESD.cxx:24
 AliTriggerScalersRecordESD.cxx:25
 AliTriggerScalersRecordESD.cxx:26
 AliTriggerScalersRecordESD.cxx:27
 AliTriggerScalersRecordESD.cxx:28
 AliTriggerScalersRecordESD.cxx:29
 AliTriggerScalersRecordESD.cxx:30
 AliTriggerScalersRecordESD.cxx:31
 AliTriggerScalersRecordESD.cxx:32
 AliTriggerScalersRecordESD.cxx:33
 AliTriggerScalersRecordESD.cxx:34
 AliTriggerScalersRecordESD.cxx:35
 AliTriggerScalersRecordESD.cxx:36
 AliTriggerScalersRecordESD.cxx:37
 AliTriggerScalersRecordESD.cxx:38
 AliTriggerScalersRecordESD.cxx:39
 AliTriggerScalersRecordESD.cxx:40
 AliTriggerScalersRecordESD.cxx:41
 AliTriggerScalersRecordESD.cxx:42
 AliTriggerScalersRecordESD.cxx:43
 AliTriggerScalersRecordESD.cxx:44
 AliTriggerScalersRecordESD.cxx:45
 AliTriggerScalersRecordESD.cxx:46
 AliTriggerScalersRecordESD.cxx:47
 AliTriggerScalersRecordESD.cxx:48
 AliTriggerScalersRecordESD.cxx:49
 AliTriggerScalersRecordESD.cxx:50
 AliTriggerScalersRecordESD.cxx:51
 AliTriggerScalersRecordESD.cxx:52
 AliTriggerScalersRecordESD.cxx:53
 AliTriggerScalersRecordESD.cxx:54
 AliTriggerScalersRecordESD.cxx:55
 AliTriggerScalersRecordESD.cxx:56
 AliTriggerScalersRecordESD.cxx:57
 AliTriggerScalersRecordESD.cxx:58
 AliTriggerScalersRecordESD.cxx:59
 AliTriggerScalersRecordESD.cxx:60
 AliTriggerScalersRecordESD.cxx:61
 AliTriggerScalersRecordESD.cxx:62
 AliTriggerScalersRecordESD.cxx:63
 AliTriggerScalersRecordESD.cxx:64
 AliTriggerScalersRecordESD.cxx:65
 AliTriggerScalersRecordESD.cxx:66
 AliTriggerScalersRecordESD.cxx:67
 AliTriggerScalersRecordESD.cxx:68
 AliTriggerScalersRecordESD.cxx:69
 AliTriggerScalersRecordESD.cxx:70
 AliTriggerScalersRecordESD.cxx:71
 AliTriggerScalersRecordESD.cxx:72
 AliTriggerScalersRecordESD.cxx:73
 AliTriggerScalersRecordESD.cxx:74
 AliTriggerScalersRecordESD.cxx:75
 AliTriggerScalersRecordESD.cxx:76
 AliTriggerScalersRecordESD.cxx:77
 AliTriggerScalersRecordESD.cxx:78
 AliTriggerScalersRecordESD.cxx:79
 AliTriggerScalersRecordESD.cxx:80
 AliTriggerScalersRecordESD.cxx:81
 AliTriggerScalersRecordESD.cxx:82
 AliTriggerScalersRecordESD.cxx:83
 AliTriggerScalersRecordESD.cxx:84
 AliTriggerScalersRecordESD.cxx:85
 AliTriggerScalersRecordESD.cxx:86
 AliTriggerScalersRecordESD.cxx:87
 AliTriggerScalersRecordESD.cxx:88
 AliTriggerScalersRecordESD.cxx:89
 AliTriggerScalersRecordESD.cxx:90
 AliTriggerScalersRecordESD.cxx:91
 AliTriggerScalersRecordESD.cxx:92
 AliTriggerScalersRecordESD.cxx:93
 AliTriggerScalersRecordESD.cxx:94
 AliTriggerScalersRecordESD.cxx:95
 AliTriggerScalersRecordESD.cxx:96
 AliTriggerScalersRecordESD.cxx:97
 AliTriggerScalersRecordESD.cxx:98
 AliTriggerScalersRecordESD.cxx:99
 AliTriggerScalersRecordESD.cxx:100
 AliTriggerScalersRecordESD.cxx:101
 AliTriggerScalersRecordESD.cxx:102
 AliTriggerScalersRecordESD.cxx:103
 AliTriggerScalersRecordESD.cxx:104
 AliTriggerScalersRecordESD.cxx:105
 AliTriggerScalersRecordESD.cxx:106
 AliTriggerScalersRecordESD.cxx:107
 AliTriggerScalersRecordESD.cxx:108
 AliTriggerScalersRecordESD.cxx:109
 AliTriggerScalersRecordESD.cxx:110
 AliTriggerScalersRecordESD.cxx:111