#include "AliHBTPairCut.h"
#include "AliHBTPair.h"
-#include <Riostream.h>
-
ClassImp(AliHBTPairCut)
const Int_t AliHBTPairCut::fkgMaxCuts = 50;
/**********************************************************/
-AliHBTPairCut::AliHBTPairCut()
+AliHBTPairCut::AliHBTPairCut():
+ fNCuts(0)
{
//constructor
fFirstPartCut = new AliHBTEmptyParticleCut(); //empty cuts
fSecondPartCut= new AliHBTEmptyParticleCut(); //empty cuts
fCuts = new AliHbtBasePairCut*[fkgMaxCuts];
- fNCuts = 0;
}
/**********************************************************/
AliHBTPairCut::AliHBTPairCut(const AliHBTPairCut& in)
{
- //copy constructor
+//copy constructor
fCuts = new AliHbtBasePairCut*[fkgMaxCuts];
fNCuts = in.fNCuts;
AliHBTPairCut::~AliHBTPairCut()
{
//destructor
+ if (fFirstPartCut != fSecondPartCut)
+ {
+ delete fSecondPartCut;
+ }
+ delete fFirstPartCut;
for (Int_t i = 0;i<fNCuts;i++)
{
delete fCuts[i];
//if NOT returns TRUE
if(!pair)
{
- Warning("Pass()","No Pasaran! We never accept NULL pointers");
+ Warning("Pass","No Pasaran! We never accept NULL pointers");
return kTRUE;
}
//check particle's cuts
- if( ( fFirstPartCut->Pass( pair->Particle1() ) ) ||
- ( fSecondPartCut->Pass(pair->Particle2() ) ) )
+ if( ( fFirstPartCut->Pass( pair->Particle1()) ) ||
+ ( fSecondPartCut->Pass(pair->Particle2()) ) )
{
return kTRUE;
}
-// cout<<"passed "<<pair->Particle1()->GetPdgCode()<<" "<<pair->Particle2()->GetPdgCode()<<endl;
return PassPairProp(pair);
}
/**********************************************************/
{
if ( (fCuts[i]->Pass(pair)) ) return kTRUE; //if one of the cuts reject, then reject
}
-// cout<<"passed "<<pair->Particle1()->GetPdgCode()<<" "<<pair->Particle2()->GetPdgCode()<<endl;
return kFALSE;
}
/**********************************************************/
}
/**********************************************************/
+void AliHBTPairCut::SetKStarRange(Double_t min, Double_t max)
+{
+ AliHBTKStarCut* cut= (AliHBTKStarCut*)FindCut(kHbtPairCutPropKStar);
+ if(cut) cut->SetRange(min,max);
+ else fCuts[fNCuts++] = new AliHBTKStarCut(min,max);
+}
+/**********************************************************/
+
AliHbtBasePairCut* AliHBTPairCut::FindCut(AliHBTPairCutProperty property)
{
for (Int_t i = 0;i<fNCuts;i++)
void AliHBTPairCut::Streamer(TBuffer &b)
{
- // Stream all objects in the array to or from the I/O buffer.
+ // Stream all objects in the array to or from the I/O buffer.
UInt_t R__s, R__c;
if (b.IsReading())
Version_t v = b.ReadVersion(&R__s, &R__c);
if (v > -1)
{
+ delete fFirstPartCut;
+ delete fSecondPartCut;
+ fFirstPartCut = 0x0;
+ fSecondPartCut = 0x0;
TObject::Streamer(b);
b >> fFirstPartCut;
b >> fSecondPartCut;
{
kHbtPairCutPropQInv, //Q invariant
kHbtPairCutPropKt,
+ kHbtPairCutPropKStar,
kHbtPairCutPropQSideCMSLC,
kHbtPairCutPropQOutCMSLC,
kHbtPairCutPropQLongCMSLC,
void SetQInvRange(Double_t min, Double_t max);
void SetKtRange(Double_t min, Double_t max);
+ void SetKStarRange(Double_t min, Double_t max);
void SetQOutCMSLRange(Double_t min, Double_t max);
void SetQSideCMSLRange(Double_t min, Double_t max);
void SetQLongCMSLRange(Double_t min, Double_t max);
AliHBTParticleCut* GetSecondPartCut() const {return fSecondPartCut;}
protected:
- AliHBTParticleCut* fFirstPartCut;
- AliHBTParticleCut* fSecondPartCut;
+ AliHBTParticleCut* fFirstPartCut;//cut on first particle in pair
+ AliHBTParticleCut* fSecondPartCut;//cut on second particle in pair
AliHbtBasePairCut** fCuts; //!
Int_t fNCuts;
ClassDef(AliHBTKtCut,1)
};
+class AliHBTKStarCut: public AliHbtBasePairCut
+ {
+ public:
+ AliHBTKStarCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBasePairCut(min,max,kHbtPairCutPropKStar){}
+ virtual ~AliHBTKStarCut(){}
+ protected:
+ virtual Double_t GetValue(AliHBTPair* pair){return pair->GetKStar();}
+ private:
+ public:
+ ClassDef(AliHBTKStarCut,1)
+ };
class AliHBTQSideCMSLCCut: public AliHbtBasePairCut
{