1 #include "AliHBTPairCut.h"
2 #include "AliHBTPair.h"
6 ClassImp(AliHBTPairCut)
7 const Int_t AliHBTPairCut::fkgMaxCuts = 50;
8 /**********************************************************/
10 AliHBTPairCut::AliHBTPairCut()
13 fFirstPartCut = new AliHBTEmptyParticleCut(); //empty cuts
14 fSecondPartCut= new AliHBTEmptyParticleCut(); //empty cuts
16 fCuts = new AliHbtBasePairCut*[fkgMaxCuts];
19 /**********************************************************/
21 AliHBTPairCut::AliHBTPairCut(const AliHBTPairCut& in)
24 fCuts = new AliHbtBasePairCut*[fkgMaxCuts];
27 fFirstPartCut = (AliHBTParticleCut*)in.fFirstPartCut->Clone();
28 fSecondPartCut = (AliHBTParticleCut*)in.fSecondPartCut->Clone();
30 for (Int_t i = 0;i<fNCuts;i++)
32 fCuts[i] = (AliHbtBasePairCut*)in.fCuts[i]->Clone();//create new object (clone) and rember pointer to it
35 /**********************************************************/
37 AliHBTPairCut::~AliHBTPairCut()
40 for (Int_t i = 0;i<fNCuts;i++)
46 /**********************************************************/
48 /**********************************************************/
50 void AliHBTPairCut::AddBasePairCut(AliHbtBasePairCut* basecut)
52 //adds the base pair cut (cut on one value)
55 if( fNCuts == (fkgMaxCuts-1) )
57 Warning("AddBasePairCut","Not enough place for another cut");
60 fCuts[fNCuts++]=basecut;
62 /**********************************************************/
64 Bool_t AliHBTPairCut::Pass(AliHBTPair* pair)
66 //methods which checks if given pair meets all criteria of the cut
67 //if it meets returns FALSE
71 Warning("Pass()","No Pasaran! We never accept NULL pointers");
75 //check particle's cuts
76 if( ( fFirstPartCut->Pass( pair->Particle1() ) ) ||
77 ( fSecondPartCut->Pass(pair->Particle2() ) ) )
82 //examine all base pair cuts
83 for (Int_t i = 0;i<fNCuts;i++)
85 if ( (fCuts[i]->Pass(pair)) ) return kTRUE; //if one of the cuts reject, then reject
88 // cout<<"passed "<<pair->Particle1()->GetPdgCode()<<" "<<pair->Particle2()->GetPdgCode()<<endl;
91 /**********************************************************/
93 void AliHBTPairCut::SetFirstPartCut(AliHBTParticleCut* cut)
97 Error("SetFirstPartCut","argument is NULL");
100 delete fFirstPartCut;
101 fFirstPartCut = (AliHBTParticleCut*)cut->Clone();
104 /**********************************************************/
106 void AliHBTPairCut::SetSecondPartCut(AliHBTParticleCut* cut)
110 Error("SetSecondPartCut","argument is NULL");
113 delete fSecondPartCut;
114 fSecondPartCut = (AliHBTParticleCut*)cut->Clone();
116 /**********************************************************/
118 void AliHBTPairCut::SetPartCut(AliHBTParticleCut* cut)
120 //sets the the same cut on both particles
123 Error("SetFirstPartCut","argument is NULL");
126 delete fFirstPartCut;
127 fFirstPartCut = (AliHBTParticleCut*)cut->Clone();
129 delete fSecondPartCut; //even if null should not be harmful
130 fSecondPartCut = fFirstPartCut;
132 /**********************************************************/
134 void AliHBTPairCut::SetQInvRange(Double_t min, Double_t max)
136 AliHBTQInvCut* cut= (AliHBTQInvCut*)FindCut(kHbtPairCutPropQInv);
137 if(cut) cut->SetRange(min,max);
138 else fCuts[fNCuts++] = new AliHBTQInvCut(min,max);
142 AliHbtBasePairCut* AliHBTPairCut::FindCut(AliHBTPairCutProperty property)
144 for (Int_t i = 0;i<fNCuts;i++)
146 if (fCuts[i]->GetProperty() == property)
147 return fCuts[i]; //we found the cut we were searching for
150 return 0x0; //we did not found this cut
153 /**********************************************************/
155 void AliHBTPairCut::Streamer(TBuffer &b)
157 // Stream all objects in the array to or from the I/O buffer.
162 Version_t v = b.ReadVersion(&R__s, &R__c);
163 TObject::Streamer(b);
167 for (Int_t i = 0;i<fNCuts;i++)
171 b.CheckByteCount(R__s, R__c,AliHBTPairCut::IsA());
175 R__c = b.WriteVersion(AliHBTPairCut::IsA(), kTRUE);
176 TObject::Streamer(b);
180 for (Int_t i = 0;i<fNCuts;i++)
184 b.SetByteCount(R__c, kTRUE);
188 ClassImp(AliHBTEmptyPairCut)
190 void AliHBTEmptyPairCut::Streamer(TBuffer &b)
192 AliHBTPairCut::Streamer(b);
195 ClassImp(AliHbtBasePairCut)
197 ClassImp(AliHBTQInvCut)