1 #include "AliHBTParticleCut.h"
5 ClassImp(AliHBTParticleCut)
6 const Int_t AliHBTParticleCut::fkgMaxCuts = 50;
7 /******************************************************************/
9 AliHBTParticleCut::AliHBTParticleCut()
11 fCuts = new AliHbtBaseCut* [fkgMaxCuts];//last property in the property
12 //property enum => defines number of properties
16 /******************************************************************/
18 AliHBTParticleCut::AliHBTParticleCut(const AliHBTParticleCut& in)
20 fCuts = new AliHbtBaseCut* [fkgMaxCuts];//last property in the property
21 //property enum => defines number of properties
24 for (Int_t i = 0;i<fNCuts;i++)
26 fCuts[i] = (AliHbtBaseCut*)in.fCuts[i]->Clone();//create new object (clone) and rember pointer to it
29 /******************************************************************/
31 AliHBTParticleCut::~AliHBTParticleCut()
33 for (Int_t i = 0;i<fNCuts;i++)
39 /******************************************************************/
41 Bool_t AliHBTParticleCut::Pass(AliHBTParticle* p)
43 //method checks all the cuts that are set (in the list)
44 //If any of the baseCuts rejects particle False(rejection) is returned
47 Warning("Pass()","No Pasaran! We never accept NULL pointers");
50 if( (p->GetPdgCode() != fPID) && ( fPID != 0)) return kTRUE;
52 for (Int_t i = 0;i<fNCuts;i++)
54 if ( (fCuts[i]->Pass(p)) ) return kTRUE; //if one of the cuts rejects, then reject
58 /******************************************************************/
60 void AliHBTParticleCut::AddBasePartCut(AliHbtBaseCut* basecut)
62 //adds the base pair cut (cut on one value)
65 if( fNCuts == (fkgMaxCuts-1) )
67 Warning("AddBasePartCut","Not enough place for another cut");
70 fCuts[fNCuts++]=basecut;
74 /******************************************************************/
75 AliHbtBaseCut* AliHBTParticleCut::FindCut(AliHBTCutProperty property)
78 for (Int_t i = 0;i<fNCuts;i++)
80 if (fCuts[i]->GetProperty() == property)
81 return fCuts[i]; //we found the cut we were searching for
84 return 0x0; //we did not found this cut
87 /******************************************************************/
89 void AliHBTParticleCut::SetMomentumRange(Double_t min, Double_t max)
91 AliHBTMomentumCut* cut= (AliHBTMomentumCut*)FindCut(kHbtP);
92 if(cut) cut->SetRange(min,max);
93 else fCuts[fNCuts++] = new AliHBTMomentumCut(min,max);
95 /******************************************************************/
98 void AliHBTParticleCut::SetPtRange(Double_t min, Double_t max)
100 AliHBTPtCut* cut= (AliHBTPtCut*)FindCut(kHbtPt);
101 if(cut) cut->SetRange(min,max);
102 else fCuts[fNCuts++] = new AliHBTPtCut(min,max);
105 /******************************************************************/
107 void AliHBTParticleCut::SetEnergyRange(Double_t min, Double_t max)
109 AliHBTEnergyCut* cut= (AliHBTEnergyCut*)FindCut(kHbtE);
110 if(cut) cut->SetRange(min,max);
111 else fCuts[fNCuts++] = new AliHBTEnergyCut(min,max);
114 /******************************************************************/
116 void AliHBTParticleCut::SetRapidityRange(Double_t min, Double_t max)
118 AliHbtBaseCut* cut = FindCut(kHbtRapidity);
119 if(cut) cut->SetRange(min,max);
120 else fCuts[fNCuts++] = new AliHBTRapidityCut(min,max);
123 /******************************************************************/
125 void AliHBTParticleCut::SetPseudoRapidityRange(Double_t min, Double_t max)
127 AliHbtBaseCut* cut = FindCut(kHbtPseudoRapidity);
128 if(cut) cut->SetRange(min,max);
129 else fCuts[fNCuts++] = new AliHBTPseudoRapidityCut(min,max);
132 /******************************************************************/
134 void AliHBTParticleCut::SetPxRange(Double_t min, Double_t max)
136 AliHbtBaseCut* cut = FindCut(kHbtPx);
137 if(cut) cut->SetRange(min,max);
138 else fCuts[fNCuts++] = new AliHBTPxCut(min,max);
140 /******************************************************************/
142 void AliHBTParticleCut::SetPyRange(Double_t min, Double_t max)
144 AliHbtBaseCut* cut = FindCut(kHbtPy);
145 if(cut) cut->SetRange(min,max);
146 else fCuts[fNCuts++] = new AliHBTPyCut(min,max);
148 /******************************************************************/
150 void AliHBTParticleCut::SetPzRange(Double_t min, Double_t max)
152 AliHbtBaseCut* cut = FindCut(kHbtPz);
153 if(cut) cut->SetRange(min,max);
154 else fCuts[fNCuts++] = new AliHBTPzCut(min,max);
156 /******************************************************************/
158 void AliHBTParticleCut::SetPhiRange(Double_t min, Double_t max)
160 AliHbtBaseCut* cut = FindCut(kHbtPhi);
161 if(cut) cut->SetRange(min,max);
162 else fCuts[fNCuts++] = new AliHBTPhiCut(min,max);
164 /******************************************************************/
166 void AliHBTParticleCut::SetThetaRange(Double_t min, Double_t max)
168 AliHbtBaseCut* cut = FindCut(kHbtTheta);
169 if(cut) cut->SetRange(min,max);
170 else fCuts[fNCuts++] = new AliHBTThetaCut(min,max);
172 /******************************************************************/
174 void AliHBTParticleCut::SetVxRange(Double_t min, Double_t max)
176 AliHbtBaseCut* cut = FindCut(kHbtVx);
177 if(cut) cut->SetRange(min,max);
178 else fCuts[fNCuts++] = new AliHBTVxCut(min,max);
180 /******************************************************************/
182 void AliHBTParticleCut::SetVyRange(Double_t min, Double_t max)
184 AliHbtBaseCut* cut = FindCut(kHbtVy);
185 if(cut) cut->SetRange(min,max);
186 else fCuts[fNCuts++] = new AliHBTVyCut(min,max);
188 /******************************************************************/
190 void AliHBTParticleCut::SetVzRange(Double_t min, Double_t max)
192 AliHbtBaseCut* cut = FindCut(kHbtVz);
193 if(cut) cut->SetRange(min,max);
194 else fCuts[fNCuts++] = new AliHBTVzCut(min,max);
197 /******************************************************************/
198 void AliHBTParticleCut::Streamer(TBuffer &b)
200 // Stream all objects in the array to or from the I/O buffer.
206 for (i = 0;i<fNCuts;i++) delete fCuts[i];
207 b.ReadVersion(&R__s, &R__c);
208 TObject::Streamer(b);
211 for (i = 0;i<fNCuts;i++)
215 b.CheckByteCount(R__s, R__c,AliHBTParticleCut::IsA());
219 R__c = b.WriteVersion(AliHBTParticleCut::IsA(), kTRUE);
220 TObject::Streamer(b);
223 for (Int_t i = 0;i<fNCuts;i++)
227 b.SetByteCount(R__c, kTRUE);
231 void AliHBTParticleCut::Print(void)
233 cout<<"Printing AliHBTParticleCut, this = "<<this<<endl;
234 cout<<"fPID "<<fPID<<endl;
235 cout<<"fNCuts "<<fNCuts <<endl;
236 for (Int_t i = 0;i<fNCuts;i++)
238 cout<<" fCuts["<<i<<"] "<<fCuts[i]<<endl<<" ";
243 /******************************************************************/
244 /******************************************************************/
246 ClassImp(AliHBTEmptyParticleCut)
247 void AliHBTEmptyParticleCut::Streamer(TBuffer &b)
249 AliHBTParticleCut::Streamer(b);
251 /******************************************************************/
252 /******************************************************************/
253 /******************************************************************/
255 /******************************************************************/
256 /******************************************************************/
257 /******************************************************************/
259 ClassImp(AliHbtBaseCut)
260 void AliHbtBaseCut::Print(void)
262 cout<<"fMin="<<fMin <<", fMax=" <<fMax<<" ";
265 void AliHbtBaseCut::PrintProperty(void)
270 cout<<"kHbtP"; break;
272 cout<<"kHbtPt"; break;
274 cout<<"kHbtE"; break;
276 cout<<"kHbtRapidity"; break;
277 case kHbtPseudoRapidity:
278 cout<<"kHbtPseudoRapidity"; break;
280 cout<<"kHbtPx"; break;
282 cout<<"kHbtPy"; break;
284 cout<<"kHbtPz"; break;
286 cout<<"kHbtPhi"; break;
288 cout<<"kHbtTheta"; break;
290 cout<<"kHbtVx"; break;
292 cout<<"kHbtVy"; break;
294 cout<<"kHbtVz"; break;
296 cout<<"kHbtNone"; break;
298 cout<<"Property Not Found";
302 ClassImp( AliHBTMomentumCut )
304 ClassImp( AliHBTPtCut )
305 ClassImp( AliHBTEnergyCut )
306 ClassImp( AliHBTRapidityCut )
307 ClassImp( AliHBTPseudoRapidityCut )
308 ClassImp( AliHBTPxCut )
309 ClassImp( AliHBTPyCut )
310 ClassImp( AliHBTPzCut )
311 ClassImp( AliHBTPhiCut )
312 ClassImp( AliHBTThetaCut )
313 ClassImp( AliHBTVxCut )
314 ClassImp( AliHBTVyCut )
315 ClassImp( AliHBTVzCut )