/* $Id$ */
-/*
- Base Class:
- Produces the data needed to calculate the quality assurance.
- All data must be mergeable objects.
- Y. Schutz CERN July 2007
-*/
+//
+// Base Class:
+// Produces the data needed to calculate the quality assurance.
+// All data must be mergeable objects.
+// Y. Schutz CERN July 2007
+//
// --- ROOT system ---
#include <TH1.h>
-#include <TList.h>
+#include <TObjArray.h>
#include <TNamed.h>
-class TFile;
+//class TCanvas ;
+class TClonesArray;
class TDirectory;
+class TFile;
class TObject;
class TTree;
class AliESDEvent;
class AliRawReader;
-class TClonesArray;
+class AliDetectorRecoParam;
// --- Standard library ---
// --- AliRoot header files ---
-#include "AliQA.h"
+#include "AliQAv1.h"
+#include "AliRecoParam.h"
class AliQADataMaker: public TNamed {
public:
+
+ AliQADataMaker(const Char_t * name="", const Char_t * title="") ; // ctor
+ AliQADataMaker(const AliQADataMaker& qadm) ;
+ virtual ~AliQADataMaker() ; // dtor
- AliQADataMaker(const char * name="", const char * title="") ; // ctor
- AliQADataMaker(const AliQADataMaker& qadm) ;
- AliQADataMaker& operator = (const AliQADataMaker& qadm) ;
- virtual ~AliQADataMaker() ; // dtor
-
- virtual void Exec(AliQA::TASKINDEX, TObject * data) ;
- void EndOfCycle(AliQA::TASKINDEX) ;
- void Finish(AliQA::TASKINDEX task) const ;
- static const char * GetDetectorDirName() { return fDetectorDirName.Data() ; }
- const Int_t Increment() { return ++fCycleCounter ; }
- TList * Init(AliQA::TASKINDEX, Int_t run, Int_t cycles = -1) ;
- const Bool_t IsCycleDone() const { return fCycleCounter > fCycle ? kTRUE : kFALSE ; }
- const Int_t Add2DigitsList(TH1 * hist, const Int_t index) { return Add2List(hist, index, fDigitsQAList) ; }
- const Int_t Add2ESDsList(TH1 * hist, const Int_t index) { return Add2List(hist, index, fESDsQAList) ; }
- const Int_t Add2HitsList(TH1 * hist, const Int_t index) { return Add2List(hist, index, fHitsQAList) ; }
- const Int_t Add2RecPointsList(TH1 * hist, const Int_t index) { return Add2List(hist, index, fRecPointsQAList) ; }
- const Int_t Add2RawsList(TH1 * hist, const Int_t index) { return Add2List(hist, index, fRawsQAList) ; }
- const Int_t Add2SDigitsList(TH1 * hist, const Int_t index) { return Add2List(hist, index, fSDigitsQAList) ; }
- TH1 * GetDigitsData(const Int_t index) { return dynamic_cast<TH1 *>(GetData(fDigitsQAList, index)) ; }
- TH1 * GetESDsData(const Int_t index) { return dynamic_cast<TH1 *>(GetData(fESDsQAList, index)) ; }
- TH1 * GetHitsData(const Int_t index) { return dynamic_cast<TH1 *>(GetData(fHitsQAList, index)) ; }
- TH1 * GetRecPointsData(const Int_t index) { return dynamic_cast<TH1 *>(GetData(fRecPointsQAList, index)) ; }
- TH1 * GetRawsData(const Int_t index) { return dynamic_cast<TH1 *>(GetData(fRawsQAList, index)) ; }
- TH1 * GetSDigitsData(const Int_t index) { return dynamic_cast<TH1 *>(GetData(fSDigitsQAList, index)) ; }
- void SetCycle(Int_t nevts) { fCycle = nevts ; }
- void StartOfCycle(AliQA::TASKINDEX, Option_t * sameCycle = "new") ;
+ virtual Int_t Add2DigitsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE) = 0 ;
+ virtual Int_t Add2ESDsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE) = 0 ;
+ virtual Int_t Add2HitsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE) = 0 ;
+ virtual Int_t Add2RecPointsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE) = 0 ;
+ virtual Int_t Add2RawsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE, const Bool_t saveForCorr = kFALSE) = 0 ;
+ virtual Int_t Add2SDigitsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE) = 0 ;
+ virtual void Exec(AliQAv1::TASKINDEX_t, TObject * data) = 0 ;
+ virtual void EndOfCycle() = 0 ;
+ virtual void EndOfCycle(AliQAv1::TASKINDEX_t ) = 0 ;
+ void Finish() const ;
+ virtual TH1 * GetDigitsData(const Int_t index) = 0 ;
+ virtual TH1 * GetESDsData(const Int_t index) = 0 ;
+ virtual TH1 * GetHitsData(const Int_t index) = 0 ;
+ virtual TH1 * GetRecPointsData(const Int_t index) = 0 ;
+ virtual TH1 * GetRawsData(const Int_t index) = 0 ;
+ virtual TH1 * GetSDigitsData(const Int_t index) = 0 ;
+ const Char_t * GetDetectorDirName() const { return fDetectorDirName.Data() ; }
+ TList * GetParameterList() const { return fParameterList[AliRecoParam::AConvert(fEventSpecie)] ; }
+ virtual const AliDetectorRecoParam * GetRecoParam() { return NULL ; }
+ Int_t Increment() { return ++fCycleCounter ; }
+ virtual TObjArray** Init(AliQAv1::TASKINDEX_t, Int_t cycles = -1) = 0 ;
+ TObjArray* Init(AliQAv1::TASKINDEX_t, AliRecoParam::EventSpecie_t es, Int_t cycles = -1) ;
+ virtual void Init(AliQAv1::TASKINDEX_t, TObjArray ** list, Int_t run, Int_t cycles = -1) = 0 ;
+ virtual void InitRaws() = 0 ;
+ virtual void InitRecPoints() = 0 ;
+ Bool_t IsCycleDone() const { return fCycleCounter > fCycle ? kTRUE : kFALSE ; }
+ Bool_t IsValidEventSpecie(Int_t eventSpecieIndex, TObjArray ** list) ;
+ void Reset() { fCycleCounter = 0 ; }
+ void SetCycle(Int_t nevts) { fCycle = nevts ; }
+ void SetWriteExpert() { fWriteExpert = kTRUE ; }
+ virtual void StartOfCycle(Int_t run = -1) = 0 ;
+ virtual void StartOfCycle(AliQAv1::TASKINDEX_t, Int_t run, const Bool_t sameCycle = kFALSE) = 0 ;
+ void UnSetWriteExpert() { fWriteExpert = kFALSE ; }
+ Bool_t WriteExpert() { return fWriteExpert ; }
+ void SetEventSpecie(AliRecoParam::EventSpecie_t es) { fEventSpecie = es ; }
+ void SetEventSpecie(Int_t es) { fEventSpecie = AliRecoParam::Convert(es) ; }
+ virtual void SetRecoParam(const AliDetectorRecoParam *) {;}
+
+ virtual void InitRecPointsForTracker() {;} // needed by AliGlobalQADataMaker
protected:
- Int_t Add2List(TH1 * hist, const Int_t index, TList * list) { list->AddAt(hist, index) ; return list->LastIndex() ; }
- virtual void EndOfDetectorCycle(AliQA::TASKINDEX, TList * ) {AliInfo("To be implemented by detectors");}
- TObject * GetData(TList * list, const Int_t index) { return list->At(index) ; }
- virtual void InitDigits() {AliInfo("To be implemented by detectors");}
- virtual void InitESDs() {AliInfo("To be implemented by detectors");}
- virtual void InitHits() {AliInfo("To be implemented by detectors");}
- //virtual void InitRecParticles() {AliInfo("To be implemented by detectors");}
- virtual void InitRecPoints() {AliInfo("To be implemented by detectors");}
- virtual void InitRaws() {AliInfo("To be implemented by detectors");}
- virtual void InitSDigits() {AliInfo("To be implemented by detectors");}
- //virtual void InitTrackSegments() {AliInfo("To ne implemented by detectors");}
- virtual void MakeESDs(AliESDEvent * ) {AliInfo("To be implemented by detectors");}
- virtual void MakeHits(TClonesArray * ) {AliInfo("To be implemented by detectors");}
- virtual void MakeDigits(TClonesArray * ) {AliInfo("To be implemented by detectors");}
- // virtual void MakeRecParticles(TClonesArray * ) {AliInfo("To be implemented by detectors");}
- virtual void MakeRaws(AliRawReader *) {AliInfo("To be implemented by detectors");}
- virtual void MakeRecPoints(TTree * ) {AliInfo("To be implemented by detectors");}
- virtual void MakeSDigits(TClonesArray * ) {AliInfo("To be implemented by detectors");}
- //virtual void MakeTrackSegments(TTree * ) {AliInfo("To be implemented by detectors");}
- void ResetCycle() { fCurrentCycle++ ; fCycleCounter = 0 ; }
- virtual void StartOfDetectorCycle() {AliInfo("To be implemented by detectors");}
+ Int_t Add2List(TH1 * hist, const Int_t index, TObjArray ** list, const Bool_t expert = kFALSE, const Bool_t image = kFALSE, const Bool_t saveForCorr = kFALSE) ;
+ TH1 * CloneMe(TH1 * hist, Int_t specie) const ;
+ virtual void DefaultEndOfDetectorCycle(AliQAv1::TASKINDEX_t task ) ;
+ virtual void EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list ) = 0 ;
+ TObject * GetData(TObjArray ** list, const Int_t index) ;
+ virtual void InitDigits() = 0 ;
+ virtual void InitESDs() = 0 ;
+ virtual void InitHits() = 0 ;
+ //virtual void InitRecParticles() = 0 ;
+ virtual void InitSDigits() = 0 ;
+ //virtual void InitTrackSegments() = 0 ;
+ virtual void MakeESDs(AliESDEvent * ) = 0 ;
+ virtual void MakeHits() = 0 ;
+ virtual void MakeHits(TTree * ) = 0 ;
+ virtual void MakeDigits() = 0 ;
+ virtual void MakeDigits(TTree * ) = 0 ;
+ //virtual void MakeRecParticles( ) = 0 ;
+ virtual void MakeRaws(AliRawReader *) = 0 ;
+ virtual void MakeRecPoints(TTree * ) = 0 ;
+ virtual void MakeSDigits() = 0 ;
+ virtual void MakeSDigits(TTree * ) = 0 ;
+ //virtual void MakeTrackSegments(TTree * ) = 0 ;
+ void ResetCycle() { fCurrentCycle++ ; fCycleCounter = 0 ; }
+ virtual void StartOfDetectorCycle() = 0 ;
+
+ TFile * fOutput ; //! output root file
+ TDirectory * fDetectorDir ; //! directory for the given detector in the file
+ TString fDetectorDirName ; //! detector directory name in the quality assurance data file
+ Int_t fCurrentCycle ; //! current cycle number
+ Int_t fCycle ; //! length (# events) of the QA data acquisition cycle
+ Int_t fCycleCounter ; //! cycle counter
+ Bool_t fWriteExpert ; //! flag to write or not the expert QA data
+ TList ** fParameterList ; //! list of QA data parameters
+ Int_t fRun ; //! run number
+ AliRecoParam::EventSpecie_t fEventSpecie ; //! event specie, see AliRecoParam
+ TClonesArray * fDigitsArray ; //! array to hold the sdigits
+
+private:
+ AliQADataMaker& operator = (const AliQADataMaker& /*qadm*/); // Not implemented
- TFile * fOutput ; //! output root file
- TDirectory * fDetectorDir ; //! directory for the given detector in the file
- static TString fDetectorDirName ; //! detector directory name in the quality assurance data file
- TList * fDigitsQAList ; //! list of the digits QA data objects
- TList * fESDsQAList ; //! list of the ESDs QA data objects
- TList * fHitsQAList ; //! list of the hits QA data objects
- TList * fRawsQAList ; //! list of the raws QA data objects
- TList * fRecPointsQAList ; //! list of the recpoints QA data objects
- TList * fSDigitsQAList ; //! list of the sdigits QA data objects
- Int_t fCurrentCycle ; //! current cycle number
- Int_t fCycle ; //! length (# events) of the QA data acquisition cycle
- Int_t fCycleCounter ; //! cycle counter
- Int_t fRun ; //! run number
- ClassDef(AliQADataMaker,1) // description
+ ClassDef(AliQADataMaker,3) // description
};