removed maximum number of steps in particle and event containers
authorrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 8 Oct 2008 15:44:52 +0000 (15:44 +0000)
committerrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 8 Oct 2008 15:44:52 +0000 (15:44 +0000)
CORRFW/AliCFManager.cxx
CORRFW/AliCFManager.h

index 156a777..dc81fb1 100644 (file)
@@ -24,6 +24,7 @@
 #include "AliLog.h"
 #include "AliCFCutBase.h"
 #include "AliCFManager.h"
+#include "AliCFContainer.h"
 
 ClassImp(AliCFManager)
 
@@ -31,38 +32,38 @@ ClassImp(AliCFManager)
 AliCFManager::AliCFManager() : 
   TNamed(),
   fEvtContainer(0x0),
-  fPartContainer(0x0)
+  fPartContainer(0x0),
+  fEvtCutList(0x0),
+  fPartCutList(0x0)
 { 
   //
   // ctor
   //
-  for(Int_t i=0;i<kNEvtSel;i++)fEvtCutList[i]=0x0;
-  for(Int_t i=0;i<kNPartSel;i++)fPartCutList[i]=0x0;
 }
 //_____________________________________________________________________________
 AliCFManager::AliCFManager(Char_t* name, Char_t* title) : 
   TNamed(name,title),
   fEvtContainer(0x0),
-  fPartContainer(0x0)
- { 
+  fPartContainer(0x0),
+  fEvtCutList(0x0),
+  fPartCutList(0x0)
+{ 
    //
    // ctor
    //
-  for(Int_t i=0;i<kNEvtSel;i++)fEvtCutList[i]=0x0;
-  for(Int_t i=0;i<kNPartSel;i++)fPartCutList[i]=0x0;
 }
 //_____________________________________________________________________________
 AliCFManager::AliCFManager(const AliCFManager& c) : 
   TNamed(c),
   fEvtContainer(c.fEvtContainer),
-  fPartContainer(c.fPartContainer)
- { 
+  fPartContainer(c.fPartContainer),
+  fEvtCutList(c.fEvtCutList),
+  fPartCutList(c.fPartCutList)
+{ 
    //
    //copy ctor
    //
-  for(Int_t i=0;i<kNEvtSel;i++)fEvtCutList[i]=c.fEvtCutList[i];
-  for(Int_t i=0;i<kNPartSel;i++)fPartCutList[i]=c.fPartCutList[i];
- }
+}
 //_____________________________________________________________________________
 AliCFManager& AliCFManager::operator=(const AliCFManager& c)
 {
@@ -72,11 +73,11 @@ AliCFManager& AliCFManager::operator=(const AliCFManager& c)
   if (this != &c) {
     TNamed::operator=(c) ;
   }
-
+  
   this->fEvtContainer=c.fEvtContainer;
   this->fPartContainer=c.fPartContainer;
-  for(Int_t i=0;i<kNEvtSel;i++)this->fEvtCutList[i]=c.fEvtCutList[i];
-  for(Int_t i=0;i<kNPartSel;i++)this->fPartCutList[i]=c.fPartCutList[i];
+  this->fEvtCutList=c.fEvtCutList;
+  this->fPartCutList=c.fPartCutList;
   return *this ;
 }
 
@@ -93,9 +94,9 @@ Bool_t AliCFManager::CheckParticleCuts(Int_t isel, TObject *obj, const TString
   // check whether object obj passes particle-level selection isel
   //
 
-  if(isel>=kNPartSel){
-    AliWarning(Form("Selection index out of Range! isel=%i, max. number of selections= %i", isel,kNPartSel));
-      return kTRUE;
+  if(isel>=fPartContainer->GetNStep()){
+    AliWarning(Form("Selection index out of Range! isel=%i, max. number of selections= %i", isel,fPartContainer->GetNStep()));
+    return kTRUE;
   }
   if(!fPartCutList[isel])return kTRUE;
   TObjArrayIter iter(fPartCutList[isel]);
@@ -114,8 +115,8 @@ Bool_t AliCFManager::CheckEventCuts(Int_t isel, TObject *obj, const TString  &se
   // check whether object obj passes event-level selection isel
   //
 
-  if(isel>=kNEvtSel){
-    AliWarning(Form("Selection index out of Range! isel=%i, max. number of selections= %i", isel,kNEvtSel));
+  if(isel>=fEvtContainer->GetNStep()){
+    AliWarning(Form("Selection index out of Range! isel=%i, max. number of selections= %i", isel,fEvtContainer->GetNStep()));
       return kTRUE;
   }
   if(!fEvtCutList[isel])return kTRUE;
@@ -134,24 +135,34 @@ void  AliCFManager::SetEventInfo(TObject *obj) const {
 
   //Particle level cuts
 
-  for(Int_t isel=0;isel<kNPartSel; isel++){
-    if(!fPartCutList[isel])continue;  
-    TObjArrayIter iter(fPartCutList[isel]);
-    AliCFCutBase *cut = 0;
-    while ( (cut = (AliCFCutBase*)iter.Next()) ) {
-      cut->SetEvtInfo(obj);
-    }    
+  if (!fPartContainer) {
+    AliWarning("No particle container");
+  }
+  else {
+    for(Int_t isel=0;isel<fPartContainer->GetNStep(); isel++){
+      if(!fPartCutList[isel])continue;  
+      TObjArrayIter iter(fPartCutList[isel]);
+      AliCFCutBase *cut = 0;
+      while ( (cut = (AliCFCutBase*)iter.Next()) ) {
+       cut->SetEvtInfo(obj);
+      }    
+    }
   }
   
   //Event level cuts 
-
-  for(Int_t isel=0;isel<kNEvtSel; isel++){
-    if(!fEvtCutList[isel])continue;  
-    TObjArrayIter iter(fEvtCutList[isel]);
-    AliCFCutBase *cut = 0;
-    while ( (cut = (AliCFCutBase*)iter.Next()) ) {
-      cut->SetEvtInfo(obj);
-    }    
+  
+  if (!fEvtContainer) {
+    AliWarning("No event container found");
+  }
+  else {
+    for(Int_t isel=0;isel<fEvtContainer->GetNStep(); isel++){
+      if(!fEvtCutList[isel])continue;  
+      TObjArrayIter iter(fEvtCutList[isel]);
+      AliCFCutBase *cut = 0;
+      while ( (cut = (AliCFCutBase*)iter.Next()) ) {
+       cut->SetEvtInfo(obj);
+      }   
+    }
   }
 }
 
@@ -170,3 +181,44 @@ Bool_t AliCFManager::CompareStrings(const TString  &cutname,const TString  &selc
 }
 
 
+//_____________________________________________________________________________
+void AliCFManager::SetEventCutsList(Int_t isel, TObjArray* array) {
+  //
+  //Setter for event-level selection cut list at selection step isel
+  //
+
+  if (!fEvtContainer) {
+    AliError("No event container defined, please set it first!"); 
+    return;
+  }
+
+  Int_t nstep = fEvtContainer->GetNStep() ;
+
+  if (!fEvtCutList) fEvtCutList = new TObjArray*[nstep] ;
+  if (isel >= nstep) {
+    AliWarning(Form("Selection index out of Range! isel=%i, max. number of selections= %i", isel,nstep));
+    return;
+  }
+  fEvtCutList[isel] = array;
+}
+
+//_____________________________________________________________________________
+void AliCFManager::SetParticleCutsList(Int_t isel, TObjArray* array) {
+  //
+  //Setter for particle-level selection cut list at selection step isel
+  //
+
+  if (!fPartContainer) {
+    AliError("No event container defined, please set it first!"); 
+    return;
+  }
+  
+  Int_t nstep = fPartContainer->GetNStep() ;
+  
+  if (!fPartCutList) fPartCutList = new TObjArray*[nstep] ;
+  if (isel >= nstep) {
+    AliWarning(Form("Selection index out of Range! isel=%i, max. number of selections= %i", isel,nstep));
+    return;
+  }
+  fPartCutList[isel] = array;
+}
index 0933214..ff203f1 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"
 
 class AliCFContainer ;
@@ -38,39 +44,35 @@ 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;} ; 
+  virtual void SetEventContainer(AliCFContainer* c) {fEvtContainer=c;} ;
 
   //pass the pointer to the correction container
   virtual void SetParticleContainer(AliCFContainer* c) {fPartContainer=c;} ; 
 
   //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
@@ -106,13 +108,13 @@ class AliCFManager : public TNamed
   //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;   //arrays of cuts for each event-selection level
   //Particle-level selections
-  TObjArray *fPartCutList[kNPartSel]; //arrays of cuts: gen,acceptance,rec,sel-level
+  TObjArray **fPartCutList ; //arrays of cuts for each particle-selection level
 
   Bool_t CompareStrings(const TString  &cutname,const TString  &selcuts) const;
 
-  ClassDef(AliCFManager,1);
+  ClassDef(AliCFManager,2);
 };