]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliTriggerScalersRecordESD.cxx
Copy constructor,=operator, reset added (Plamen)
[u/mrichter/AliRoot.git] / STEER / AliTriggerScalersRecordESD.cxx
1 /*************************************************************************\r
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *\r
3 *                                                                        *\r
4 * Author: The ALICE Off-line Project.                                    *\r
5 * Contributors are mentioned in the code where appropriate.              *\r
6 *                                                                        *\r
7 * Permission to use, copy, modify and distribute this software and its   *\r
8 * documentation strictly for non-commercial purposes is hereby granted   *\r
9 * without fee, provided that the above copyright notice appears in all   *\r
10 * copies and that both the copyright notice and this permission notice   *\r
11 * appear in the supporting documentation. The authors make no claims     *\r
12 * about the suitability of this software for any purpose. It is          *\r
13 * provided "as is" without express or implied warranty.                  * \r
14 **************************************************************************/\r
15 \r
16 \r
17 #include <Riostream.h>\r
18 #include <TObjArray.h>\r
19 #include "AliLog.h"  \r
20 #include "AliTriggerScalersESD.h"\r
21 #include "AliTriggerScalersRecordESD.h"\r
22 \r
23 ClassImp( AliTriggerScalersRecordESD )\r
24 //_____________________________________________________________________________\r
25 AliTriggerScalersRecordESD::AliTriggerScalersRecordESD():\r
26 TObject(),\r
27 fScalers()\r
28 {\r
29 }\r
30 \r
31 //_____________________________________________________________________________\r
32 void AliTriggerScalersRecordESD::AddTriggerScalers( AliTriggerScalersESD* scaler ) \r
33\r
34   fScalers.AddLast( scaler ); \r
35 }\r
36 \r
37 //_____________________________________________________________________________\r
38 void AliTriggerScalersRecordESD::AddTriggerScalers( UChar_t classIndex, ULong64_t LOCB, ULong64_t LOCA,        \r
39                                          ULong64_t L1CB, ULong64_t L1CA, ULong64_t L2CB, ULong64_t L2CA )\r
40 {\r
41     AddTriggerScalers( new AliTriggerScalersESD( classIndex, LOCB, LOCA, L1CB, L1CA, L2CB, L2CA ) );\r
42\r
43 \r
44 //_____________________________________________________________________________\r
45 AliTriggerScalersRecordESD::AliTriggerScalersRecordESD( const AliTriggerScalersRecordESD &rec ) :\r
46 TObject(rec),\r
47 fScalers()\r
48 {\r
49 for (Int_t i = 0; i < rec.fScalers.GetEntriesFast(); i++) {\r
50     if (rec.fScalers[i]) fScalers.Add(rec.fScalers[i]->Clone());\r
51   }\r
52 }\r
53 //_____________________________________________________________________________\r
54 AliTriggerScalersRecordESD& AliTriggerScalersRecordESD:: operator=(const AliTriggerScalersRecordESD& rec)\r
55 {\r
56 if(&rec == this) return *this;\r
57 ((TObject *)this)->operator=(rec);\r
58 for (Int_t i = 0; i < rec.fScalers.GetEntriesFast(); i++) {\r
59     if (rec.fScalers[i]) fScalers.Add(rec.fScalers[i]->Clone());\r
60   }\r
61 \r
62 return *this;\r
63\r
64 \r
65 //_____________________________________________________________________________\r
66 void AliTriggerScalersRecordESD::Reset()\r
67 {\r
68 fScalers.SetOwner();\r
69 fScalers.Clear();\r
70\r
71 \r
72 //_____________________________________________________________________________\r
73 AliTriggerScalersESD* AliTriggerScalersRecordESD::GetTriggerScalersForClass( Int_t classindex )\r
74 {\r
75    // Find Trigger scaler with class ID = classmask using a binary search. \r
76 \r
77    Int_t   base, last;\r
78    AliTriggerScalersESD *op2 = NULL;\r
79    \r
80    base = 0;\r
81    last = fScalers.GetEntriesFast();\r
82 \r
83    while (base < last) {\r
84       op2 = (AliTriggerScalersESD *)fScalers.At(base);\r
85       if( op2->GetClassIndex()  == classindex ) return op2;\r
86       base++;\r
87    }\r
88    return op2;   \r
89 }\r
90                                       \r
91 //_____________________________________________________________________________\r
92 void AliTriggerScalersRecordESD::Print( const Option_t* ) const\r
93 {\r
94    // Print\r
95   cout << "Trigger Scalers Record: " << endl;\r
96   for( Int_t i=0; i<fScalers.GetEntriesFast(); ++i ) \r
97      ((AliTriggerScalersESD*)fScalers.At(i))->Print();\r
98 }\r