// efficiency calculation.
// prototype version by S.Arcelli silvia.arcelli@cern.ch
///////////////////////////////////////////////////////////////////////////
-#include "AliLog.h"
#include "AliCFCutBase.h"
#include "AliCFManager.h"
//_____________________________________________________________________________
AliCFManager::AliCFManager() :
TNamed(),
+ fNStepEvt(0),
+ fNStepPart(0),
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),
+ fNStepEvt(0),
+ fNStepPart(0),
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),
+ fNStepEvt(c.fNStepEvt),
+ fNStepPart(c.fNStepPart),
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)
{
if (this != &c) {
TNamed::operator=(c) ;
}
-
+
+ this->fNStepEvt=c.fNStepEvt;
+ this->fNStepPart=c.fNStepPart;
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 ;
}
// 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>=fNStepPart){
+ AliWarning(Form("Selection index out of Range! isel=%i, max. number of selections= %i", isel,fNStepPart));
+ return kTRUE;
}
if(!fPartCutList[isel])return kTRUE;
TObjArrayIter iter(fPartCutList[isel]);
// 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>=fNStepEvt){
+ AliWarning(Form("Selection index out of Range! isel=%i, max. number of selections= %i", isel,fNStepEvt));
return kTRUE;
}
if(!fEvtCutList[isel])return kTRUE;
}
//_____________________________________________________________________________
-void AliCFManager::SetEventInfo(TObject *obj) const {
+void AliCFManager::SetMCEventInfo(const 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 (!fPartCutList) {
+ AliWarning("No particle cut list found");
+ }
+ else {
+ for(Int_t isel=0;isel<fNStepPart; isel++){
+ if(!fPartCutList[isel])continue;
+ TObjArrayIter iter(fPartCutList[isel]);
+ AliCFCutBase *cut = 0;
+ while ( (cut = (AliCFCutBase*)iter.Next()) ) {
+ cut->SetMCEventInfo(obj);
+ }
+ }
}
//Event level cuts
+
+ if (!fEvtCutList) {
+ AliWarning("No event cut list found");
+ }
+ else {
+ for(Int_t isel=0;isel<fNStepEvt; isel++){
+ if(!fEvtCutList[isel])continue;
+ TObjArrayIter iter(fEvtCutList[isel]);
+ AliCFCutBase *cut = 0;
+ while ( (cut = (AliCFCutBase*)iter.Next()) ) {
+ cut->SetMCEventInfo(obj);
+ }
+ }
+ }
+}
+//_____________________________________________________________________________
+void AliCFManager::SetRecEventInfo(const TObject *obj) const {
+
+ //Particle 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 (!fPartCutList) {
+ AliWarning("No particle cut list found");
+ }
+ else {
+ for(Int_t isel=0;isel<fNStepPart; isel++){
+ if(!fPartCutList[isel])continue;
+ TObjArrayIter iter(fPartCutList[isel]);
+ AliCFCutBase *cut = 0;
+ while ( (cut = (AliCFCutBase*)iter.Next()) ) {
+ cut->SetRecEventInfo(obj);
+ }
+ }
+ }
+
+ //Event level cuts
+
+ if (!fEvtCutList) {
+ AliWarning("No event cut list found");
+ }
+ else {
+ for(Int_t isel=0;isel<fNStepEvt; isel++){
+ if(!fEvtCutList[isel])continue;
+ TObjArrayIter iter(fEvtCutList[isel]);
+ AliCFCutBase *cut = 0;
+ while ( (cut = (AliCFCutBase*)iter.Next()) ) {
+ cut->SetRecEventInfo(obj);
+ }
+ }
}
}
}
+//_____________________________________________________________________________
+void AliCFManager::SetEventCutsList(Int_t isel, TObjArray* array) {
+ //
+ //Setter for event-level selection cut list at selection step isel
+ //
+
+ if (!fEvtContainer) {
+ AliWarning("No event container defined, you may need to set it first!");
+ }
+
+ Int_t nstep = fNStepEvt;
+
+ if (!fEvtCutList) {
+ fEvtCutList = new TObjArray*[nstep] ;
+ for (Int_t i=0; i<nstep; ++i) fEvtCutList[i] = 0;
+ }
+ 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) {
+ AliWarning("No particle container defined, you may need to set it first!");
+ }
+
+ Int_t nstep = fNStepPart ;
+
+ if (!fPartCutList) {
+ fPartCutList = new TObjArray*[nstep] ;
+ for (Int_t istep = 0; istep < nstep; istep++) fPartCutList[istep] = 0;
+ }
+
+ if (isel >= nstep) {
+ AliWarning(Form("Selection index out of Range! isel=%i, max. number of selections= %i", isel,nstep));
+ return;
+ }
+ fPartCutList[isel] = array;
+}