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.
205 Version_t v = b.ReadVersion(&R__s, &R__c);
206 TObject::Streamer(b);
209 for (Int_t i = 0;i<fNCuts;i++)
213 b.CheckByteCount(R__s, R__c,AliHBTParticleCut::IsA());
217 R__c = b.WriteVersion(AliHBTParticleCut::IsA(), kTRUE);
218 TObject::Streamer(b);
221 for (Int_t i = 0;i<fNCuts;i++)
225 b.SetByteCount(R__c, kTRUE);
229 void AliHBTParticleCut::Print(void)
231 cout<<"Printing AliHBTParticleCut, this = "<<this<<endl;
232 cout<<"fPID "<<fPID<<endl;
233 cout<<"fNCuts "<<fNCuts <<endl;
234 for (Int_t i = 0;i<fNCuts;i++)
236 cout<<" fCuts["<<i<<"] "<<fCuts[i]<<endl<<" ";
241 /******************************************************************/
242 /******************************************************************/
244 ClassImp(AliHBTEmptyParticleCut)
245 void AliHBTEmptyParticleCut::Streamer(TBuffer &b)
247 AliHBTParticleCut::Streamer(b);
249 /******************************************************************/
250 /******************************************************************/
251 /******************************************************************/
253 /******************************************************************/
254 /******************************************************************/
255 /******************************************************************/
257 ClassImp(AliHbtBaseCut)
258 void AliHbtBaseCut::Print(void)
260 cout<<"fMin="<<fMin <<", fMax=" <<fMax<<" ";
263 void AliHbtBaseCut::PrintProperty(void)
268 cout<<"kHbtP"; break;
270 cout<<"kHbtPt"; break;
272 cout<<"kHbtE"; break;
274 cout<<"kHbtRapidity"; break;
275 case kHbtPseudoRapidity:
276 cout<<"kHbtPseudoRapidity"; break;
278 cout<<"kHbtPx"; break;
280 cout<<"kHbtPy"; break;
282 cout<<"kHbtPz"; break;
284 cout<<"kHbtPhi"; break;
286 cout<<"kHbtTheta"; break;
288 cout<<"kHbtVx"; break;
290 cout<<"kHbtVy"; break;
292 cout<<"kHbtVz"; break;
294 cout<<"kHbtNone"; break;
296 cout<<"Property Not Found";
300 ClassImp( AliHBTMomentumCut )
302 ClassImp( AliHBTPtCut )
303 ClassImp( AliHBTEnergyCut )
304 ClassImp( AliHBTRapidityCut )
305 ClassImp( AliHBTPseudoRapidityCut )
306 ClassImp( AliHBTPxCut )
307 ClassImp( AliHBTPyCut )
308 ClassImp( AliHBTPzCut )
309 ClassImp( AliHBTPhiCut )
310 ClassImp( AliHBTThetaCut )
311 ClassImp( AliHBTVxCut )
312 ClassImp( AliHBTVyCut )
313 ClassImp( AliHBTVzCut )