]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - CORRFW/AliCFManager.h
PWGPP-69 - initialize additional dEdx information diring tracking itteration 0 -...
[u/mrichter/AliRoot.git] / CORRFW / AliCFManager.h
index f2a1619934549b6fa57626af598533fdcf2e0be2..379c6c2656a1ad82580a94cb008ddba0a87273ad 100644 (file)
 // selections/correction containers inside the Analysis job
 // Author:S.Arcelli. Silvia.Arcelli@cern.ch 
 
+//
+// updated by renaud.vernet@cern.ch (2008/10/08) :
+// removed predefined maximum number of steps
+// now the number of steps are fixed by the particle/event containers themselves.
+//
+
 #include "TNamed.h"
+#include "AliCFContainer.h"
+#include "AliLog.h"
 
-class TObject;
-class TList;
-class TBits;
-class AliCFContainer ;
-class AliMCEventHandler ;
-class AliGenEventHeader ;
 //____________________________________________________________________________
 class AliCFManager : public TNamed 
 {
@@ -42,39 +44,48 @@ class AliCFManager : public TNamed
   //
   enum{
     kEvtGenCuts=0,
-      kEvtTrigCuts,
-      kEvtRecCuts,
-      kNEvtSel=3
-      };
+    kEvtTrigCuts,
+    kEvtRecCuts
+  };
 
   //
   //Currently foreseen selection steps for particle-level cuts:
   //generator, acceptance, reconstruction, user selection
   //
-
   enum{
-      kPartGenCuts=0,
-      kPartAccCuts,
-      kPartRecCuts,
-      kPartSelCuts,
-      kNPartSel=4
-      };
+    kPartGenCuts=0,
+    kPartAccCuts,
+    kPartRecCuts,
+    kPartSelCuts
+  };
 
   //
   // Setters:
   //
-  //pass the pointer to the correction container
-  virtual void SetEventContainer(AliCFContainer* c) {fEvtContainer=c;} ; 
 
   //pass the pointer to the correction container
-  virtual void SetParticleContainer(AliCFContainer* c) {fPartContainer=c;} ; 
+  virtual void SetEventContainer(AliCFContainer* c) {
+    fEvtContainer=c; 
+    SetNStepEvent(c->GetNStep());
+    AliWarning(Form("Please dont forget to set the cut list (event empty) for the %d event-selection step requested",fNStepEvt));
+  }
+  
+  //pass the pointer to the correction container
+  virtual void SetParticleContainer(AliCFContainer* c) {
+    fPartContainer=c; 
+    SetNStepParticle(c->GetNStep());
+    AliWarning(Form("Please dont forget to set the cut list (even empty) for the %d particle-selection step requested",fNStepPart));
+  }
+  
+  //Set the number of steps (already done if you have defined your containers)
+  virtual void SetNStepEvent   (Int_t nstep) {fNStepEvt  = nstep;}
+  virtual void SetNStepParticle(Int_t nstep) {fNStepPart = nstep;}
 
   //Setter for event-level selection cut list at selection step isel
-  virtual void SetEventCutsList(Int_t isel, TObjArray* array) {fEvtCutList[isel]=array;} ; 
-
+  virtual void SetEventCutsList(Int_t isel, TObjArray* array) ;
+  
   //Setter for particle-level selection cut list at selection step isel
-  virtual void SetParticleCutsList(Int_t isel, TObjArray* array) {fPartCutList[isel]=array;} ; 
-
+  virtual void SetParticleCutsList(Int_t isel, TObjArray* array) ;
 
   //
   //Getters
@@ -94,7 +105,9 @@ class AliCFManager : public TNamed
 
   //Pass the pointer to obj to the selections (used to access MC/rec global
   //event info when requested
-  virtual void SetEventInfo(TObject *obj) const;
+  virtual void  SetMCEventInfo(const TObject *obj) const;
+  virtual void SetRecEventInfo(const TObject *obj) const;
+  virtual void SetEventInfo(TObject*) const {AliError("DEPRECATED !! -> use SetMCEventInfo or SetRecEventInfo instead");}
 
   //Cut Checkers: by default *all* the cuts of a given input list is checked 
   //(.and. of all cuts), but the user can select a subsample of cuts in the 
@@ -103,31 +116,23 @@ class AliCFManager : public TNamed
   virtual Bool_t CheckEventCuts(Int_t isel, TObject *obj, const TString &selcuts="all") const;
   virtual Bool_t CheckParticleCuts(Int_t isel, TObject *obj, const TString &selcuts="all") const;
 
-  virtual void FillQABeforeEventCuts(Int_t isel, TObject *obj) const;
-  virtual void FillQAAfterEventCuts(Int_t isel, TObject *obj) const;
-  virtual void FillQABeforeParticleCuts(Int_t isel, TObject *obj) const;
-  virtual void FillQAAfterParticleCuts(Int_t isel, TObject *obj) const;
-
-  virtual void InitQAHistos() const;//init QA histograms
-  virtual TBits*  GetQAParticleSelBits(Int_t isel, TObject *obj);//get cut mask
-  virtual void AddQAHistosToList(TList *list) const; //put the QA histos in TList
-  
-  
  private:
-
+  
+  //number of steps
+  Int_t fNStepEvt;  // number of steps in event selection
+  Int_t fNStepPart; // number of steps in particle selection
   //the correction grid
   AliCFContainer *fEvtContainer; //ptr to Evt-Level correction container
   //the correction grid
   AliCFContainer *fPartContainer; //ptr to Particle-level correction container
   //Evt-Level Selections
-  TObjArray *fEvtCutList[kNEvtSel]; //arrays of cuts: gen,trig,rec-level
+  TObjArray **fEvtCutList;   //[fNStepEvt] arrays of cuts for each event-selection level
   //Particle-level selections
-  TObjArray *fPartCutList[kNPartSel]; //arrays of cuts: gen,acceptance,rec,sel-level
-  TBits *fhQABits; // Global list of Cuts' QA BitMaps
+  TObjArray **fPartCutList ; //[fNStepPart] arrays of cuts for each particle-selection level
 
   Bool_t CompareStrings(const TString  &cutname,const TString  &selcuts) const;
 
-  ClassDef(AliCFManager,1);
+  ClassDef(AliCFManager,2);
 };