#include "AliHBTParticleCut.h" #include ClassImp(AliHBTParticleCut) const Int_t AliHBTParticleCut::fkgMaxCuts = 50; /******************************************************************/ AliHBTParticleCut::AliHBTParticleCut() { fCuts = new AliHbtBaseCut* [fkgMaxCuts];//last property in the property //property enum => defines number of properties fNCuts = 0; fPID = 0; } /******************************************************************/ AliHBTParticleCut::AliHBTParticleCut(const AliHBTParticleCut& in) { fCuts = new AliHbtBaseCut* [fkgMaxCuts];//last property in the property //property enum => defines number of properties fNCuts = in.fNCuts; fPID = in.fPID; for (Int_t i = 0;iClone();//create new object (clone) and rember pointer to it } } /******************************************************************/ AliHBTParticleCut::~AliHBTParticleCut() { for (Int_t i = 0;iGetPdgCode() != fPID) && ( fPID != 0)) return kTRUE; for (Int_t i = 0;iPass(p)) ) return kTRUE; //if one of the cuts rejects, then reject } return kFALSE; } /******************************************************************/ void AliHBTParticleCut::AddBasePartCut(AliHbtBaseCut* basecut) { //adds the base pair cut (cut on one value) if (!basecut) return; if( fNCuts == (fkgMaxCuts-1) ) { Warning("AddBasePartCut","Not enough place for another cut"); return; } fCuts[fNCuts++]=basecut; } /******************************************************************/ AliHbtBaseCut* AliHBTParticleCut::FindCut(AliHBTCutProperty property) { for (Int_t i = 0;iGetProperty() == property) return fCuts[i]; //we found the cut we were searching for } return 0x0; //we did not found this cut } /******************************************************************/ void AliHBTParticleCut::SetMomentumRange(Double_t min, Double_t max) { AliHBTMomentumCut* cut= (AliHBTMomentumCut*)FindCut(kHbtP); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTMomentumCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetPtRange(Double_t min, Double_t max) { AliHBTPtCut* cut= (AliHBTPtCut*)FindCut(kHbtPt); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTPtCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetEnergyRange(Double_t min, Double_t max) { AliHBTEnergyCut* cut= (AliHBTEnergyCut*)FindCut(kHbtE); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTEnergyCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetRapidityRange(Double_t min, Double_t max) { AliHbtBaseCut* cut = FindCut(kHbtRapidity); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTRapidityCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetPseudoRapidityRange(Double_t min, Double_t max) { AliHbtBaseCut* cut = FindCut(kHbtPseudoRapidity); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTPseudoRapidityCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetPxRange(Double_t min, Double_t max) { AliHbtBaseCut* cut = FindCut(kHbtPx); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTPxCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetPyRange(Double_t min, Double_t max) { AliHbtBaseCut* cut = FindCut(kHbtPy); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTPyCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetPzRange(Double_t min, Double_t max) { AliHbtBaseCut* cut = FindCut(kHbtPz); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTPzCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetPhiRange(Double_t min, Double_t max) { AliHbtBaseCut* cut = FindCut(kHbtPhi); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTPhiCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetThetaRange(Double_t min, Double_t max) { AliHbtBaseCut* cut = FindCut(kHbtTheta); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTThetaCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetVxRange(Double_t min, Double_t max) { AliHbtBaseCut* cut = FindCut(kHbtVx); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTVxCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetVyRange(Double_t min, Double_t max) { AliHbtBaseCut* cut = FindCut(kHbtVy); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTVyCut(min,max); } /******************************************************************/ void AliHBTParticleCut::SetVzRange(Double_t min, Double_t max) { AliHbtBaseCut* cut = FindCut(kHbtVz); if(cut) cut->SetRange(min,max); else fCuts[fNCuts++] = new AliHBTVzCut(min,max); } /******************************************************************/ void AliHBTParticleCut::Streamer(TBuffer &b) { // 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); TObject::Streamer(b); b >> fPID; b >> fNCuts; for (Int_t i = 0;i> fCuts[i]; } b.CheckByteCount(R__s, R__c,AliHBTParticleCut::IsA()); } else { R__c = b.WriteVersion(AliHBTParticleCut::IsA(), kTRUE); TObject::Streamer(b); b << fPID; b << fNCuts; for (Int_t i = 0;iPrint(); } } /******************************************************************/ /******************************************************************/ ClassImp(AliHBTEmptyParticleCut) void AliHBTEmptyParticleCut::Streamer(TBuffer &b) { AliHBTParticleCut::Streamer(b); } /******************************************************************/ /******************************************************************/ /******************************************************************/ /******************************************************************/ /******************************************************************/ /******************************************************************/ ClassImp(AliHbtBaseCut) void AliHbtBaseCut::Print(void) { cout<<"fMin="<