Line data Source code
1 : /*************************************************************************
2 : * Copyright(c) 1998-2008, 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 : #include <Riostream.h>
18 : #include <TObjArray.h>
19 : #include <AliTimeStamp.h>
20 : #include "AliLog.h"
21 : #include "AliTriggerScalersESD.h"
22 : #include "AliTriggerScalersRecordESD.h"
23 :
24 : using std::endl;
25 : using std::cout;
26 172 : ClassImp( AliTriggerScalersRecordESD )
27 : //_____________________________________________________________________________
28 : AliTriggerScalersRecordESD::AliTriggerScalersRecordESD():
29 68 : TObject(),
30 68 : fTimestamp(),
31 68 : fScalers(),
32 68 : fTimeGroup(0)
33 340 : {
34 136 : }
35 :
36 : //_____________________________________________________________________________
37 : void AliTriggerScalersRecordESD::AddTriggerScalers( AliTriggerScalersESD* scaler )
38 : {
39 4 : fScalers.AddLast( scaler );
40 2 : }
41 :
42 : //_____________________________________________________________________________
43 : void AliTriggerScalersRecordESD::AddTriggerScalers( UChar_t classIndex, ULong64_t LOCB, ULong64_t LOCA,
44 : ULong64_t L1CB, ULong64_t L1CA, ULong64_t L2CB, ULong64_t L2CA )
45 : {
46 0 : AddTriggerScalers( new AliTriggerScalersESD( classIndex, LOCB, LOCA, L1CB, L1CA, L2CB, L2CA ) );
47 0 : }
48 :
49 : //_____________________________________________________________________________
50 : AliTriggerScalersRecordESD::AliTriggerScalersRecordESD( const AliTriggerScalersRecordESD &rec ) :
51 0 : TObject(rec),
52 0 : fTimestamp(rec.fTimestamp),
53 0 : fScalers(),
54 0 : fTimeGroup(rec.fTimeGroup)
55 0 : {
56 : //copy constructor
57 0 : for (Int_t i = 0; i < rec.fScalers.GetEntriesFast(); i++) {
58 0 : if (rec.fScalers[i]) fScalers.Add(rec.fScalers[i]->Clone());
59 : }
60 0 : }
61 : //_____________________________________________________________________________
62 : AliTriggerScalersRecordESD& AliTriggerScalersRecordESD:: operator=(const AliTriggerScalersRecordESD& rec)
63 : {
64 : //asignment operator
65 12 : if(&rec == this) return *this;
66 6 : ((TObject *)this)->operator=(rec);
67 6 : fTimestamp=rec.fTimestamp;
68 6 : fScalers.Delete();
69 12 : for (Int_t i = 0; i < rec.fScalers.GetEntriesFast(); i++) {
70 0 : if (rec.fScalers[i]) fScalers.Add(rec.fScalers[i]->Clone());
71 : }
72 6 : fTimeGroup=rec.fTimeGroup;
73 6 : return *this;
74 6 : }
75 :
76 : //_____________________________________________________________________________
77 : void AliTriggerScalersRecordESD::Reset()
78 : {
79 198 : fScalers.SetOwner();
80 99 : fScalers.Clear();
81 99 : fTimeGroup=0;
82 99 : }
83 :
84 : //_____________________________________________________________________________
85 : const AliTriggerScalersESD* AliTriggerScalersRecordESD::GetTriggerScalersForClass( const Int_t classindex ) const
86 : {
87 : // Find Trigger scaler with class ID = classmask using a binary search.
88 :
89 : Int_t base, last;
90 : AliTriggerScalersESD *op2 = NULL;
91 :
92 : base = 0;
93 0 : last = fScalers.GetEntriesFast();
94 :
95 0 : while (base < last) {
96 0 : op2 = (AliTriggerScalersESD *)fScalers.At(base);
97 0 : if( op2->GetClassIndex() == classindex ) return op2;
98 0 : base++;
99 : }
100 0 : return op2;
101 0 : }
102 :
103 : //_____________________________________________________________________________
104 : void AliTriggerScalersRecordESD::Print( const Option_t* ) const
105 : {
106 : // Print
107 0 : cout << "Trigger Scalers Record, time group: "<< fTimeGroup << endl;
108 0 : fTimestamp.Print();
109 0 : for( Int_t i=0; i<fScalers.GetEntriesFast(); ++i )
110 0 : ((AliTriggerScalersESD*)fScalers.At(i))->Print();
111 0 : }
|