}
/**********************************************************/
-AliAODPairBaseCut* AliAODPairCut::FindCut(AliAODPairCutProperty property)
+AliAODPairBaseCut* AliAODPairCut::FindCut(EAODPairCutProperty property)
{
// Find the cut corresponding to "property"
for (Int_t i = 0;i<fNCuts;i++)
class AliAODParticleCut;
class AliAODPairBaseCut;
-enum AliAODPairCutProperty
+enum EAODPairCutProperty
{
kHbtPairCutPropQInv, //Q invariant
kHbtPairCutPropKt,
Int_t fNCuts;//Number of cuts in fCuts array
- AliAODPairBaseCut* FindCut(AliAODPairCutProperty cut);
+ AliAODPairBaseCut* FindCut(EAODPairCutProperty cut);
private:
static const Int_t fgkMaxCuts; // Max number of cuts
ClassDef(AliAODPairCut,2)
public:
- AliAODPairBaseCut(Double_t min = 0.0, Double_t max = 0.0, AliAODPairCutProperty prop= kHbtPairCutPropNone):
+ AliAODPairBaseCut(Double_t min = 0.0, Double_t max = 0.0, EAODPairCutProperty prop= kHbtPairCutPropNone):
fMin(min),fMax(max),fProperty(prop){}
virtual ~AliAODPairBaseCut(){}
Double_t GetMinimum() const {return fMin;}
Double_t GetMaximum() const {return fMax;}
- AliAODPairCutProperty GetProperty() const {return fProperty;}
+ EAODPairCutProperty GetProperty() const {return fProperty;}
protected:
virtual Double_t GetValue(AliAODPair* pair) const = 0;
Double_t fMin; // Lower boundary of the range
Double_t fMax; // Upper boundary of the range
- AliAODPairCutProperty fProperty; // The property itself
+ EAODPairCutProperty fProperty; // The property itself
ClassDef(AliAODPairBaseCut,1)
}
/******************************************************************/
-AliAODParticleBaseCut* AliAODParticleCut::FindCut(AliAODCutProperty property)
+AliAODParticleBaseCut* AliAODParticleCut::FindCut(EAODCutProperty property)
{
//returns pointer to the cut checking the given property
for (Int_t i = 0;i<fNCuts;i++)
/******************************************************************/
/******************************************************************/
-enum AliAODCutProperty
+enum EAODCutProperty
{
//codes particle property
kAODP, //Momentum
void Print(void) const;
protected:
- AliAODParticleBaseCut* FindCut(AliAODCutProperty property);
+ AliAODParticleBaseCut* FindCut(EAODCutProperty property);
AliAODParticleBaseCut ** fCuts;//! Array with cuts
Int_t fNCuts; //number of base cuts stored in fCuts
public:
- AliAODParticleBaseCut(Double_t min = 0.0, Double_t max = 0.0,AliAODCutProperty prop = kAODNone):
+ AliAODParticleBaseCut(Double_t min = 0.0, Double_t max = 0.0,EAODCutProperty prop = kAODNone):
fProperty(prop),fMin(min),fMax(max){}
virtual ~AliAODParticleBaseCut(){}
Double_t GetMinimum() const {return fMin;}
Double_t GetMaximum() const {return fMax;}
- AliAODCutProperty GetProperty() const {return fProperty;}
+ EAODCutProperty GetProperty() const {return fProperty;}
virtual void Print(void) const;
protected:
virtual Double_t GetValue(AliVAODParticle *) const = 0;
- AliAODCutProperty fProperty; //property that this cut describes
+ EAODCutProperty fProperty; //property that this cut describes
Double_t fMin;//minimum value
Double_t fMax;//maximum value
AliEventBaseCut::AliEventBaseCut():
fMin(0.0),
- fMax(0.0)
+ fMax(0.0),
+ fProperty(kNone)
{
//ctor
}
/**********************************************************/
-AliEventBaseCut::AliEventBaseCut(Double_t min, Double_t max):
+AliEventBaseCut::AliEventBaseCut(Double_t min, Double_t max, EEventCutProperty prop):
fMin(min),
- fMax(max)
+ fMax(max),
+ fProperty(prop)
{
//ctor
}
class AliAOD;
-enum AliEventCutProperty
+enum EEventCutProperty
{
kPrimVertexXCut,
kPrimVertexYCut,
kPrimVertexZCut,
- kNChargedCut
+ kNChargedCut,
+ kNone
};
class AliEventBaseCut: public TObject
{
public:
AliEventBaseCut();
- AliEventBaseCut(Double_t min,Double_t max);
+ AliEventBaseCut(Double_t min,Double_t max, EEventCutProperty prop = kNone);
virtual ~AliEventBaseCut(){}
-
virtual Bool_t Pass(AliAOD* aod) const;//returns kTRUE if rejected
+ virtual void SetRange(Double_t min, Double_t max){fMin = min; fMax = max;}
+
+ virtual EEventCutProperty GetProperty()const{return fProperty;}
+
protected:
virtual Double_t GetValue(AliAOD* aod) const = 0;
Double_t fMin;//Minimum value
Double_t fMax;//Maximum value
+ EEventCutProperty fProperty;//Defines the type of the cut - used by the setters cut
+
private:
ClassDef(AliEventBaseCut,1)
};
class AliPrimVertexXCut: public AliEventBaseCut
{
public:
- AliPrimVertexXCut(){}
- AliPrimVertexXCut(Double_t min,Double_t max):AliEventBaseCut(min,max){}
+ AliPrimVertexXCut():AliEventBaseCut(0,0,kPrimVertexXCut){}
+ AliPrimVertexXCut(Double_t min,Double_t max):AliEventBaseCut(min,max,kPrimVertexXCut){}
virtual ~AliPrimVertexXCut(){}
protected:
Double_t GetValue(AliAOD* aod) const;
class AliPrimVertexYCut: public AliEventBaseCut
{
public:
- AliPrimVertexYCut(){}
- AliPrimVertexYCut(Double_t min,Double_t max):AliEventBaseCut(min,max){}
+ AliPrimVertexYCut():AliEventBaseCut(0,0,kPrimVertexYCut){}
+ AliPrimVertexYCut(Double_t min,Double_t max):AliEventBaseCut(min,max,kPrimVertexYCut){}
virtual ~AliPrimVertexYCut(){}
protected:
class AliPrimVertexZCut: public AliEventBaseCut
{
public:
- AliPrimVertexZCut(){}
- AliPrimVertexZCut(Double_t min,Double_t max):AliEventBaseCut(min,max){}
+ AliPrimVertexZCut():AliEventBaseCut(0,0,kPrimVertexZCut){}
+ AliPrimVertexZCut(Double_t min,Double_t max):AliEventBaseCut(min,max,kPrimVertexZCut){}
virtual ~AliPrimVertexZCut(){}
protected:
Double_t GetValue(AliAOD* aod) const;
class AliNChargedCut: public AliEventBaseCut
{
public:
- AliNChargedCut(){}
+ AliNChargedCut():AliEventBaseCut(0,0,kNChargedCut){}
AliNChargedCut(Double_t min, Double_t max, Double_t etamin = -10.0, Double_t etamax = 10.0):
- AliEventBaseCut(min,max),fEtaMin(etamin),fEtaMax(etamax){}
+ AliEventBaseCut(min,max,kNChargedCut),fEtaMin(etamin),fEtaMax(etamax){}
virtual ~AliNChargedCut(){}
+
+ void SetEtaRange(Double_t min,Double_t max){fEtaMin = min;fEtaMax = max;}
protected:
Double_t GetValue(AliAOD* aod) const;
Double_t fEtaMin;//Defines max of eta range where mult is caclulated
}
return kFALSE;
}
+/*********************************************************/
+void AliEventCut::AddBasePartCut(AliEventBaseCut* ebcut)
+{
+//Adds a base cut
+ if (ebcut == 0x0)
+ {
+ Error("AddBasePartCut","Pointer to base cut is NULL");
+ return;
+ }
+
+ if (ebcut->GetProperty() != kNone)
+ {
+ if (FindCut(ebcut->GetProperty()))
+ {
+ Warning("AddBasePartCut","Cut with this property is already in the list of base cuts");
+ }
+ }
+
+ fBaseCuts.Add(ebcut->Clone());
+
+}
+/*********************************************************/
+
+AliEventBaseCut* AliEventCut::FindCut(EEventCutProperty prop)
+{
+//Finds and returns pointer to the cut with given property
+ Int_t n = fBaseCuts.GetEntries();
+ for (Int_t i = 0; i<n; i++)
+ {
+ AliEventBaseCut* bcut = (AliEventBaseCut*)fBaseCuts.At(i);
+ if (bcut->GetProperty() == prop)
+ return bcut; //we found the cut we were searching for
+ }
+
+ return 0x0; //we did not found this cut
+
+}
+/*********************************************************/
+
+void AliEventCut::SetNChargedRange(Int_t min,Int_t max,Double_t etamin,Double_t etamax)
+{
+ //Sets renge of number of charged particles
+ AliNChargedCut* cut = dynamic_cast<AliNChargedCut*>(FindCut(kNChargedCut));
+ if(cut)
+ {
+ cut->SetRange(min,max);
+ cut->SetEtaRange(etamin,etamax);
+ }
+ else fBaseCuts.Add(new AliNChargedCut(min,max,etamin,etamax));
+}
/*********************************************************/
/*********************************************************/
#include "AliEventBaseCut.h"
class AliAOD;
+enum EEventCutProperty;
class AliEventCut: public TObject
{
virtual ~AliEventCut();
virtual Bool_t Pass(AliAOD* aod) const;//returns kTRUE if rejected
- void AddBasePartCut(AliEventBaseCut* ebcut){fBaseCuts.Add(ebcut);}
+ void AddBasePartCut(AliEventBaseCut* ebcut);
+
+ void SetNChargedRange(Int_t min,Int_t max, Double_t etamin = -10.0,Double_t etamax = 10.0);
protected:
+ AliEventBaseCut* FindCut(EEventCutProperty prop);
+
TObjArray fBaseCuts;
private:
ClassDef(AliEventCut,1)