1 #ifndef ALIEMCALLOADER_H
2 #define ALIEMCALLOADER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 //_________________________________________________________________________
9 // A singleton that returns various objects
10 // Should be used on the analysis stage to avoid confusing between different
11 // branches of reconstruction tree: e.g. reading RecPoints and TS made from
12 // another set of RecPoints.
14 // The objects are retrived from folders.
15 //*-- Author: Yves Schutz (SUBATECH) & Dmitri Peressounko (RRC KI & SUBATECH)
19 // --- ROOT system ---
20 #include "TClonesArray.h"
27 // --- AliRoot header files ---
28 #include "AliLoader.h"
29 #include "AliEMCALCalibData.h"
30 #include "AliEMCALAlignData.h"
36 class AliEMCALSDigit ;
37 class AliEMCALRecPoint ;
39 class AliEMCALLoader : public AliLoader {
44 AliEMCALLoader(const AliEMCALLoader & obj):AliLoader(obj){}
45 AliEMCALLoader(const Char_t *detname,const Char_t *eventfoldername);
47 virtual ~AliEMCALLoader() ;
49 // assignement operator requested by coding convention, but not needed
50 const AliEMCALLoader & operator = (const AliEMCALLoader & ) {return *this;}
52 virtual Int_t GetEvent(); // Overload to fill TClonesArray
53 virtual Int_t LoadHits(Option_t* opt); // Overload to fill TClonesArray
54 virtual Int_t LoadSDigits(Option_t* opt); // Overload to fill TClonesArray
55 virtual Int_t LoadDigits(Option_t* opt); // Overload to fill TClonesArray
56 virtual Int_t LoadRecPoints(Option_t* opt); // Overload to fill TClonesArray
58 virtual void CleanHits() const
59 { if (fHits) fHits->Clear(); AliLoader::CleanHits(); }
60 virtual void CleanSDigits() const
61 { if (fSDigits) fSDigits->Clear(); AliLoader::CleanSDigits(); }
62 virtual void CleanDigits() const
63 { if (fDigits) fDigits->Clear(); AliLoader::CleanDigits(); }
64 virtual void CleanRecPoints() const
65 { if (fRecPoints) fRecPoints->Clear(); AliLoader::CleanRecPoints(); }
67 // This does not work due to const
69 virtual void MakeHitsContainer() const { AliLoader::MakeHitsContainer(); TreeH()->Branch(fDetectorName,"TClonesArray",&fHits); }
70 virtual void MakeSDigitsContainer() const { AliLoader::MakeSDigitsContainer(); TreeS()->SetBranchAddress(fDetectorName,&fSDigits); }
71 virtual void MakeDigitsContainer() const { AliLoader::MakeDigitsContainer(); TreeD()->SetBranchAddress(fDetectorName,&fDigits); }
72 virtual void MakeRecPointsContainer() const { AliLoader::MakeRecPointsContainer(); TreeR()->SetBranchAddress(fgkECARecPointsBranchName,&fRecPoints); }
75 // ************ TClonesArrays Access functions
77 TClonesArray* Hits(void) { return fHits;}
79 const AliEMCALHit* Hit(Int_t index) {
81 return (const AliEMCALHit*) fHits->At(index);
85 TClonesArray* SDigits() { return fSDigits;}
86 const AliEMCALDigit* SDigit(Int_t index) {
88 return (const AliEMCALDigit*) fSDigits->At(index);
92 TClonesArray* Digits() { return fDigits;}
93 const AliEMCALDigit * Digit(Int_t index) {
95 return (const AliEMCALDigit*) fDigits->At(index);
99 TObjArray * RecPoints() { return fRecPoints;}
100 const AliEMCALRecPoint * RecPoint(Int_t index) {
102 return (const AliEMCALRecPoint*) fRecPoints->At(index);
106 void SetDebug(Int_t level) {fDebug = level;} // Set debug level
110 Int_t CalibrateRaw (Double_t energy, Int_t module, Int_t column, Int_t row);//take real calibration coefficients
112 void SetAlignData(AliEMCALAlignData* alignda) { fAlignData = alignda; }
113 void SetCalibData(AliEMCALCalibData* calibda) { fCalibData = calibda; }
114 AliEMCALAlignData * AlignData(); // to get the alignment CDB object
115 AliEMCALCalibData * CalibData(); // to get the calibration CDB object
119 static const TString fgkECARecPointsBranchName; //! Name of branch with ECA Reconstructed Points
121 Int_t fDebug ; // Debug level
123 // All data are stored in TTrees on file.
124 // These TCLonesArrays are temporary storage for reading or writing
125 // (connected to TTrees with SetBranchAddress)
126 TClonesArray *fHits; //! TClonesArray of hits (for tree reading)
127 TClonesArray *fDigits; //! TClonesArray of digits (for tree reading)
128 TClonesArray *fSDigits; //! TClonesArray of sdigits (for tree reading)
129 TObjArray *fRecPoints; //! TClonesArray of recpoints (for tree reading)
131 static AliEMCALAlignData * fAlignData;
132 static AliEMCALCalibData * fCalibData; // calibration data
134 ClassDef(AliEMCALLoader,0) // Algorithm class that provides methods to retrieve objects from a list knowing the index
138 #endif // AliEMCALLOADER_H