X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOSGetter.h;h=76d8ebd33a5eb8a89ec957b2a9b174685d56fc0d;hb=a8bf0b36079bd3abb6d765056846fd374f3434a0;hp=59fef05cb02468010deb9d6ef028a63e3e26f29f;hpb=931e9fdb45d52b2d92bcd9243943a6c54825065e;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOSGetter.h b/PHOS/AliPHOSGetter.h index 59fef05cb02..76d8ebd33a5 100644 --- a/PHOS/AliPHOSGetter.h +++ b/PHOS/AliPHOSGetter.h @@ -17,200 +17,250 @@ // --- ROOT system --- -#include "TClonesArray.h" -#include "TFolder.h" -#include "TTree.h" -class TString ; +#include "TObject.h" class TParticle ; -class TTask ; +class TTree ; +class TGraph ; +class TF1 ; // --- Standard library --- -#include -#include // --- AliRoot header files --- - -#include "AliRun.h" -#include "AliPHOS.h" +#include "AliConfig.h" +#include "AliPHOSLoader.h" +#include "AliPHOSHit.h" +#include "AliPHOSDigit.h" +#include "AliPHOSEmcRecPoint.h" +#include "AliPHOSCpvRecPoint.h" +#include "AliPHOSTrackSegment.h" +#include "AliPHOSRecParticle.h" +#include "AliPHOSDigitizer.h" +#include "AliPHOSSDigitizer.h" +#include "AliPHOSCalibData.h" +#include "AliPHOSAlignData.h" + +class AliPHOS ; class AliPHOSGeometry ; -class AliPHOSHit ; -class AliPHOSDigit ; -class AliPHOSDigitizer ; -class AliPHOSSDigitizer ; -class AliPHOSEmcRecPoint ; -class AliPHOSCpvRecPoint ; class AliPHOSClusterizer ; -class AliPHOSTrackSegment ; -class AliPHOSTrackSegmentMaker ; -class AliPHOSRecParticle ; -class AliPHOSPID ; +class AliPHOSTrackSegmentMaker ; +class AliPHOSPID ; +class AliPHOSBeamTestEvent ; +class AliESD ; +class AliRawReader ; class AliPHOSGetter : public TObject { - public: - - AliPHOSGetter(){ - // ctor: this is a singleton, the ctor should never be called but cint needs it as public - cerr << "ERROR: AliPHOGetter is a singleton default ctor not callable" << endl ; - abort() ; +public: + AliPHOSGetter(){ // ctor: this is a singleton, the ctor should never be called but cint needs it as public + Fatal("ctor", "AliPHOSGetter is a singleton default ctor not callable") ; } - AliPHOSGetter(const AliPHOSGetter & obj) { + +public: + AliPHOSGetter(const AliPHOSGetter & obj) : TObject(obj) { // cpy ctor requested by Coding Convention - // but not yet needed - abort() ; + Fatal("cpy ctor", "not implemented") ; } - virtual ~AliPHOSGetter() ; - - Bool_t PostHits(void ) const ; - Bool_t PostSDigits( const char * name, const char * file = 0) const ; - Bool_t PostDigits( const char * name ) const ; - Bool_t PostRecPoints( const char * name ) const ; - Bool_t PostTrackSegments(const char * name) const ; - Bool_t PostRecParticles( const char * name) const ; - - Bool_t PostClusterizer( const char * name) const ; - Bool_t PostClusterizer(AliPHOSClusterizer * clu) const ; - Bool_t PostSDigitizer (AliPHOSSDigitizer * sdigitizer) const ; - Bool_t PostSDigitizer ( const char * name, const char * file ) const ; - Bool_t PostDigitizer (AliPHOSDigitizer * digitizer) const ; - Bool_t PostDigitizer ( const char * name) const ; - Bool_t PostTrackSegmentMaker(AliPHOSTrackSegmentMaker * tsm) const ; - Bool_t PostTrackSegmentMaker(const char * name ) const ; - Bool_t PostPID (AliPHOSPID * pid) const ; - Bool_t PostPID (const char * name ) const ; - Bool_t PostQA (void) const ; - - - void Event(const Int_t event, const char * opt = "HSDRQ") ; - void Track(Int_t itrack) ; - - //Method to be used when digitizing under AliRunDigitizer, who opens all files etc. - void ReadTreeS(TTree * treeS,Int_t input) ; - - Int_t EventNumber() { return (Int_t) gAlice->GetEvNumber() ; } - Int_t MaxEvent() { return (Int_t) gAlice->TreeE()->GetEntries() ; } - static AliPHOSGetter * GetInstance(const char* headerFile, - const char* branchTitle = "Default" ) ; - static AliPHOSGetter * GetInstance() ; - - const AliPHOS * PHOS() ; - const AliPHOSGeometry * PHOSGeometry() ; - // Alarms - TFolder * Alarms() const { return (TFolder*)(ReturnO("Alarms", 0)) ; } - TObjArray * Alarms(const char * name ) const { return (TObjArray*)(ReturnO("Alarms", name)) ; } - - // QA Tasks - TTask * QATasks(const char * name = 0) const { return (TTask*)(ReturnT("QATasks", name)) ; } - - // Hits - TClonesArray * Hits(void) const { return (TClonesArray*)(ReturnO("Hits")) ; } - - // SDigits - TClonesArray * SDigits(const char * name = 0, const char * file=0) const - { return (TClonesArray*)(ReturnO("SDigits", name, file)) ; } - - AliPHOSSDigitizer * SDigitizer(const char * name =0) const - { return ((AliPHOSSDigitizer*)(ReturnT("SDigitizer", name))) ; } - - // Digits - TClonesArray * Digits(const char * name = 0) const - { return (TClonesArray*)(ReturnO("Digits", name)) ; } - AliPHOSDigitizer * Digitizer(const char * name =0) const - { return (AliPHOSDigitizer*)(ReturnT("Digitizer", name)) ; } - - // RecPoints - TObjArray * EmcRecPoints(const char * name = 0) const { - return (TObjArray*)(ReturnO("EmcRecPoints", name)) ; } - TObjArray * CpvRecPoints(const char * name = 0) const { - return (TObjArray*)(ReturnO("CpvRecPoints", name)) ; } - - AliPHOSClusterizer * Clusterizer (const char * name =0) const - { return (AliPHOSClusterizer*)(ReturnT("Clusterizer", name)) ; } - - // TrackSegments - TClonesArray * TrackSegments(const char * name = 0) const - { return (TClonesArray*)(ReturnO("TrackSegments", name)) ; } - AliPHOSTrackSegmentMaker * TrackSegmentMaker (const char * name =0) const - { return (AliPHOSTrackSegmentMaker*)(ReturnT("TrackSegmentMaker", name)) ; } - - // RecParticles - TClonesArray * RecParticles(const char * name = 0) const - { return (TClonesArray*)(ReturnO("RecParticles", name)) ; } - AliPHOSPID * PID(const char * name =0) const - { return (AliPHOSPID*)(ReturnT("PID", name)) ; } - - // Primaries - const TParticle * Primary(Int_t index) const ; - const Int_t NPrimaries()const { return fNPrimaries; } - - void SetDebug(Int_t level) {fDebug = level;} // Set debug level - AliPHOSGetter & operator = (const AliPHOSGetter & ) { // assignement operator requested by coding convention, but not needed - abort() ; + Fatal("operator =", "not implemented") ; return *this ; } + virtual ~AliPHOSGetter() ; + + //=========== Instantiators ================ + static AliPHOSGetter * Instance(const char* headerFile, + const char* version = AliConfig::GetDefaultEventFolderName(), + Option_t * openingOption = "READ" ) ; + static AliPHOSGetter * Instance() ; + + void Print(const Option_t *)const{} + static void Print() ; + + //=========== General information about run ============== + virtual Bool_t IsLoaded(TString tree) const { return fLoadingStatus.Contains(tree) ; } + virtual void SetLoaded(TString tree) { fLoadingStatus += tree ; } - TFolder * SDigitsFolder() { return dynamic_cast(fSDigitsFolder->FindObject("PHOS")) ; } - - private: - - AliPHOSGetter(const char* headerFile, const char* branchTitle ="Default") ; - void CreateWhiteBoard() const ; - const TObject * ReturnO(TString what, TString name=0, TString file=0) const ; - const TTask * ReturnT(TString what,TString name=0) const ; - void DefineBranchTitles(char* branch, char* branchTitle) ; - void ReadTreeD() ; - void ReadTreeH() ; - void ReadTreeR() ; - void ReadTreeS(Int_t event) ; - void ReadTreeQA() ; - void ReadPrimaries() ; - - void * HitsRef(void) const ; - void * SDigitsRef(const char * name, const char * file = 0 ) const; - void * DigitsRef (const char * name) const ; - void * EmcRecPointsRef (const char * name) const ; - void * CpvRecPointsRef (const char * name) const ; - void * TrackSegmentsRef(const char * name) const ; - void * RecParticlesRef (const char * name) const ; - void * AlarmsRef (void) const ; - - void * SDigitizerRef (const char * name) const ; - void * DigitizerRef (const char * name) const ; - void * ClusterizerRef(const char * name) const ; - void * TSMakerRef (const char * name) const ; - void * PIDRef (const char * name) const ; - - private: - - TString fHeaderFile ; //! File in which gAlice lives - TString fBranchTitle ; //! - TString fTrackSegmentsTitle ;//! - TString fRecPointsTitle ; //! - TString fRecParticlesTitle ; //! - TString fDigitsTitle ; //! - TString fSDigitsTitle ; //! - - Int_t fDebug ; // Debug level - - Int_t fNPrimaries ; //! # of primaries - - TObjArray * fPrimaries ; //! list of lists of primaries-for the case of mixing - - TFolder * fModuleFolder ; //!Folder that contains the modules - TFolder * fHitsFolder ; //!Folder that contains the Hits - TFolder * fSDigitsFolder ; //!Folder that contains the SDigits - TFolder * fDigitsFolder ; //!Folder that contains the Digits - TFolder * fRecoFolder ; //!Folder that contains the reconstructed objects (RecPoints, TrackSegments, RecParticles) - TFolder * fQAFolder ; //!Folder that contains the QA objects - TFolder * fTasksFolder ; //!Folder that contains the Tasks (sdigitizer, digitizer, reconstructioner) + virtual Int_t MaxEvent() const ; + virtual Int_t EventNumber() const ; + virtual Bool_t VersionExists(TString & opt) const ; + virtual UShort_t EventPattern(void) const ; + virtual Float_t BeamEnergy(void) const ; + + //========== PHOSGeometry and PHOS ============= + virtual AliPHOS * PHOS() const ; + virtual AliPHOSGeometry * PHOSGeometry() const ; + + //========== Methods to read something from file ========== + virtual void Event(Int_t event, const char * opt = "HSDRTP") ; + void Event(AliRawReader *rawReader, const char * opt = "W") ; + virtual void Track(Int_t itrack) ; + + //-----------------now getter's data-------------------------------------- + AliPHOSCalibrationDB * CalibrationDB(){return fcdb; } + void ReadCalibrationDB(const char * /*name*/, const char * /*filename*/){ ;} + void SetCalibrationDB(AliPHOSCalibrationDB * cdb) {fcdb = cdb ;} + + void SetCalibData(AliPHOSCalibData* calibda) { fgCalibData = calibda; } + AliPHOSCalibData * CalibData(); + + //=========== Primaries ============ + virtual TClonesArray * Primaries(void) ; + virtual TParticle * Primary(Int_t index) const ; + virtual Int_t NPrimaries()const { return fNPrimaries; } + virtual TParticle * Secondary(const TParticle * p, Int_t index=1) const ; + + //=========== Hits ================= + virtual TClonesArray * Hits(void) const ; + virtual AliPHOSHit * Hit(Int_t index) const { return dynamic_cast(Hits()->At(index) );} + virtual TTree * TreeH() const ; + + //=========== SDigits ============== + virtual TClonesArray * SDigits() const ; + virtual AliPHOSDigit * SDigit(Int_t index) const { return static_cast(SDigits()->At(index)) ;} + virtual TTree * TreeS() const ; + virtual AliPHOSSDigitizer * SDigitizer() ; + + virtual TString GetSDigitsFileName() const { return PhosLoader()->GetSDigitsFileName() ; } + virtual Int_t LoadSDigits(Option_t* opt="") const { return PhosLoader()->LoadSDigits(opt) ; } + virtual Int_t LoadSDigitizer(Option_t* opt="") const { return PhosLoader()->LoadSDigitizer(opt) ; } + virtual Int_t WriteSDigits(Option_t* opt="") const { return PhosLoader()->WriteSDigits(opt) ; } + virtual Int_t WriteSDigitizer(Option_t* opt="") const { + return PhosLoader()->WriteSDigitizer(opt) ; } + + //========== Digits ================ + virtual TClonesArray * Digits() const ; + virtual AliPHOSDigit * Digit(Int_t index) const { return static_cast(Digits()->At(index)) ;} + virtual TTree * TreeD() const ; + virtual AliPHOSDigitizer * Digitizer() ; + virtual TString GetDigitsFileName() const { return PhosLoader()->GetDigitsFileName() ; } + virtual Int_t LoadDigits(Option_t* opt="") const { return PhosLoader()->LoadDigits(opt) ; } + virtual Int_t LoadDigitizer(Option_t* opt="") const { + return PhosLoader()->LoadDigitizer(opt) ; } + virtual Int_t WriteDigits(Option_t* opt="") const { return PhosLoader()->WriteDigits(opt) ; } + virtual Int_t WriteDigitizer(Option_t* opt="") const { + return PhosLoader()->WriteDigitizer(opt) ; } + + //Methods to distinguish raw and simulated digits + virtual Bool_t IsRawDigits(void) const {return fRawDigits;} + virtual void SetRawDigits(Bool_t isRaw = kTRUE){fRawDigits = isRaw;} + + //========== RecPoints ============= + virtual TObjArray * EmcRecPoints() const; + virtual AliPHOSEmcRecPoint * EmcRecPoint(Int_t index) const { return static_cast(EmcRecPoints()->At(index)) ;} + virtual TObjArray * CpvRecPoints() const ; + virtual AliPHOSCpvRecPoint * CpvRecPoint(Int_t index) const { return static_cast(CpvRecPoints()->At(index)) ;} + virtual TTree * TreeR() const ; + virtual AliPHOSClusterizer * Clusterizer() ; + virtual TString GetRecPointsFileName() const { return PhosLoader()->GetRecPointsFileName() ; } + virtual Int_t LoadRecPoints(Option_t* opt="") const { return PhosLoader()->LoadRecPoints(opt) ; } + virtual Int_t LoadClusterizer(Option_t* opt="") const { + return PhosLoader()->LoadClusterizer(opt) ; } + virtual Int_t WriteRecPoints(Option_t* opt="") const { return PhosLoader()->WriteRecPoints(opt) ; } + virtual Int_t WriteClusterizer(Option_t* opt="") const { + return PhosLoader()->WriteClusterizer(opt) ; } + + //========== TrackSegments TClonesArray * TrackSegments(const char * name = 0) { + virtual TClonesArray * TrackSegments() const; + virtual AliPHOSTrackSegment * TrackSegment(Int_t index) const { return static_cast(TrackSegments()->At(index)) ;} + virtual TTree * TreeT() const ; + virtual AliPHOSTrackSegmentMaker * TrackSegmentMaker() ; + virtual TString GetTracksFileName() const { return PhosLoader()->GetTracksFileName() ; } + virtual Int_t LoadTracks(Option_t* opt="") const { return PhosLoader()->LoadTracks(opt) ; } + virtual Int_t LoadTrackSegementMaker(Option_t* opt="") const { + return PhosLoader()->LoadTrackSegmentMaker(opt) ; } + virtual Int_t WriteTracks(Option_t* opt="") const { return PhosLoader()->WriteTracks(opt) ; } + virtual Int_t WriteTrackSegmentMaker(Option_t* opt="") const { + return PhosLoader()->WriteTracker(opt) ; } + + //========== RecParticles =========== + virtual TClonesArray * RecParticles() const; + virtual AliPHOSRecParticle * RecParticle(Int_t index) const { return static_cast(RecParticles()->At(index)) ;} + virtual TTree * TreeP() const ; + virtual AliPHOSPID * PID() ; + virtual TString GetRecParticlesFileName() const { return PhosLoader()->GetRecParticlesFileName() ; } + virtual Int_t LoadRecParticles(Option_t* opt="") const { return PhosLoader()->LoadRecParticles(opt) ; } + virtual Int_t LoadPID(Option_t* opt="") const { + return PhosLoader()->LoadPID(opt) ; } + virtual Int_t WriteRecParticles(Option_t* opt="") const { return PhosLoader()->WriteRecParticles(opt) ; } + virtual Int_t WritePID(Option_t* opt="") const { + return PhosLoader()->WritePID(opt) ; } + + //========== Raw =========== + virtual Int_t ReadRaw(AliRawReader *rawReader) ; + + void SetDebug(Int_t level) {fgDebug = level;} // Set debug level + virtual void PostClusterizer(AliPHOSClusterizer * clu) + const{PhosLoader()->PostClusterizer(clu) ; } + virtual void PostPID(AliPHOSPID * pid) + const{PhosLoader()->PostPID(pid) ; } + virtual void PostTrackSegmentMaker(AliPHOSTrackSegmentMaker * tr) + const{PhosLoader()->PostTrackSegmentMaker(tr) ; } + virtual void PostSDigitizer (AliPHOSSDigitizer * sdigitizer) + const {PhosLoader()->PostSDigitizer(sdigitizer);} + virtual void PostDigitizer (AliPHOSDigitizer * digitizer) + const {PhosLoader()->PostDigitizer(digitizer);} + + virtual TString Version() const { return PhosLoader()->GetTitle() ; } + virtual AliPHOSLoader * PhosLoader() const { return fgPhosLoader ; } + virtual void Reset() ; + + virtual AliESD * ESD() const { return fESD ; } + +protected : + AliPHOSGetter(Int_t /*i*/){ // special constructor for onflight + + } +protected: static AliPHOSGetter * fgObjGetter; // pointer to the unique instance of the singleton + +private: + AliPHOSGetter(const char* headerFile, + const char* version = AliConfig::GetDefaultEventFolderName(), + Option_t * openingOption = "READ") ; +private: + + Int_t ReadTreeD(void) const ; + Int_t ReadTreeH(void) const ; + Int_t ReadTreeR(void) const ; + Int_t ReadTreeT(void) const ; + Int_t ReadTreeS(void) const ; + Int_t ReadTreeP(void) const ; + + Int_t ReadTreeE(Int_t event) ; + Bool_t OpenESDFile() ; + void ReadPrimaries(void) ; - ClassDef(AliPHOSGetter,1) // Algorithm class that provides methods to retrieve objects from a list knowing the index + void FitRaw(Bool_t lowGainFlag, TGraph * gLowGain, TGraph * gHighGain, TF1* signalF, Double_t & energy, Double_t & time) const; -}; + Int_t CalibrateRaw (Double_t energy, Int_t *relId); + +private: + + AliPHOSBeamTestEvent * fBTE ; //! Header if BeamTest Event + static Int_t fgDebug ; //! Debug level + + TString fLoadingStatus ; //! tells which trees are loaded + Int_t fNPrimaries ; //! # of primaries + TClonesArray * fPrimaries ; //! list of lists of primaries + TFile * fESDFile ; //! ESD file + TString fESDFileName ; //! ESD File Name + AliESD * fESD ; //! ESD object + TTree * fESDTree ; //! ESD Tree + + Bool_t fRawDigits ; //! true is raw data + + AliPHOSCalibrationDB * fcdb ; //! Calibration DB for beam test run 2004 + static AliPHOSCalibData * fgCalibData; //! instance of AliPHOSCalibData + + static AliPHOSLoader * fgPhosLoader ; // the loader for the NewIO + + enum EDataTypes{kHits,kSDigits,kDigits,kRecPoints,kTracks,kNDataTypes}; + + + ClassDef(AliPHOSGetter,2) // Algorithm class that provides methods to retrieve objects from a list knowing the index + + }; #endif // AliPHOSGETTER_H