New class description
[u/mrichter/AliRoot.git] / ANALYSIS / AliAODParticleBaseCut.cxx
CommitLineData
f9f11a4b 1#include "AliAODParticleBaseCut.h"
7112e775 2//__________________________________________________________________________
3////////////////////////////////////////////////////////////////////////////
4// //
5// class AliAODParticleBaseCut //
6// //
7// Set of classes for performing cuts on particle properties of //
8// AliAODParticleBaseCut is a base class for "base //
9// particle cuts". Further, there are implemented classes that performs //
10// cuts on the most common particle properties like pt, pseudo rapidity, //
11// angles, anergy, etc. //
12// //
13// There are also implemeted base cuts that perform logical operations //
14// on results of base particle cuts: AliAODOrCut and AliAODAndCut. //
15// //
16// Each base cut has a property, thet allows to distinguish them. //
17// This functionality is used by the interface methods of Particle Cut //
18// that allows easy update ranges. //
19// //
20// more info: http://aliweb.cern.ch/people/skowron/analyzer/index.html //
21// responsible: Piotr Skowronski@cern.ch //
22// //
23////////////////////////////////////////////////////////////////////////////
f9f11a4b 24
25
26#include <Riostream.h>
27
28ClassImp(AliAODParticleBaseCut)
29void AliAODParticleBaseCut::Print(void) const
30{
31 // prints the information anout the base cut to stdout
32 cout<<"fMin="<<fMin <<", fMax=" <<fMax<<" ";
33 PrintProperty();
34}
35/******************************************************************/
36
37void AliAODParticleBaseCut::PrintProperty(void) const
38{
39 //prints the property name
40 switch (fProperty)
41 {
42 case kAODP:
43 cout<<"kAODP"; break;
44 case kAODPt:
45 cout<<"kAODPt"; break;
46 case kAODE:
47 cout<<"kAODE"; break;
48 case kAODRapidity:
49 cout<<"kAODRapidity"; break;
50 case kAODPseudoRapidity:
51 cout<<"kAODPseudoRapidity"; break;
52 case kAODPx:
53 cout<<"kAODPx"; break;
54 case kAODPy:
55 cout<<"kAODPy"; break;
56 case kAODPz:
57 cout<<"kAODPz"; break;
58 case kAODPhi:
59 cout<<"kAODPhi"; break;
60 case kAODTheta:
61 cout<<"kAODTheta"; break;
62 case kAODVx:
63 cout<<"kAODVx"; break;
64 case kAODVy:
65 cout<<"kAODVy"; break;
66 case kAODVz:
67 cout<<"kAODVz"; break;
68 case kAODPid:
69 cout<<"kAODPid"; break;
70 case kAODNone:
71 cout<<"kAODNone"; break;
72 default:
73 cout<<"Property Not Found";
74 }
75 cout<<endl;
76}
77ClassImp( AliAODMomentumCut )
78
79ClassImp( AliAODPtCut )
80ClassImp( AliAODEnergyCut )
81ClassImp( AliAODRapidityCut )
82ClassImp( AliAODPseudoRapidityCut )
83ClassImp( AliAODPxCut )
84ClassImp( AliAODPyCut )
85ClassImp( AliAODPzCut )
86ClassImp( AliAODPhiCut )
87ClassImp( AliAODThetaCut )
88ClassImp( AliAODVxCut )
89ClassImp( AliAODVyCut )
90ClassImp( AliAODVzCut )
91
92ClassImp( AliAODPIDCut )
93
94void AliAODPIDCut::Print(void) const
95{
96 cout<<"PID "<<fPID<<" ";
97 AliAODParticleBaseCut::Print();
98}
99
100ClassImp( AliAODLogicalOperCut )
101
102AliAODLogicalOperCut::AliAODLogicalOperCut():
103 AliAODParticleBaseCut(-10e10,10e10,kAODNone),
104 fFirst(new AliAODDummyBaseCut),
105 fSecond(new AliAODDummyBaseCut)
106{
107 //ctor
108}
109/******************************************************************/
110
111AliAODLogicalOperCut::AliAODLogicalOperCut(AliAODParticleBaseCut* first, AliAODParticleBaseCut* second):
112 AliAODParticleBaseCut(-10e10,10e10,kAODNone),
113 fFirst((first)?(AliAODParticleBaseCut*)first->Clone():0x0),
114 fSecond((second)?(AliAODParticleBaseCut*)second->Clone():0x0)
115{
116 //ctor
117 if ( (fFirst && fSecond) == kFALSE)
118 {
119 Fatal("AliAODLogicalOperCut","One of parameters is NULL!");
120 }
121}
122/******************************************************************/
123
124AliAODLogicalOperCut::~AliAODLogicalOperCut()
125{
126 //destructor
127 delete fFirst;
128 delete fSecond;
129}
130/******************************************************************/
131
132Bool_t AliAODLogicalOperCut::AliAODDummyBaseCut::Rejected(AliVAODParticle* /*part*/) const
133{
134 //checks if particles passes properties defined by this cut
135 Warning("Pass","You are using dummy base cut! Probobly some logical cut is not set up properly");
136 return kFALSE;//accept
137}
138/******************************************************************/
139
140void AliAODLogicalOperCut::Streamer(TBuffer &b)
141{
142 // Stream all objects in the array to or from the I/O buffer.
143 UInt_t R__s, R__c;
144 if (b.IsReading())
145 {
146 delete fFirst;
147 delete fSecond;
148 fFirst = 0x0;
149 fSecond = 0x0;
150
151 b.ReadVersion(&R__s, &R__c);
152 TObject::Streamer(b);
153 b >> fFirst;
154 b >> fSecond;
155 b.CheckByteCount(R__s, R__c,AliAODLogicalOperCut::IsA());
156 }
157 else
158 {
159 R__c = b.WriteVersion(AliAODLogicalOperCut::IsA(), kTRUE);
160 TObject::Streamer(b);
161 b << fFirst;
162 b << fSecond;
163 b.SetByteCount(R__c, kTRUE);
164 }
165}
166
167/******************************************************************/
168ClassImp(AliAODOrCut)
169
170Bool_t AliAODOrCut::Rejected(AliVAODParticle * p) const
171{
172 //returns true when rejected
173 //AND operation is a little bit misleading but is correct
174 //User wants to build logical cuts with natural (positive) logic
175 //while AODAN use inernally reverse (returns true when rejected)
176 if (fFirst->Rejected(p) && fSecond->Rejected(p)) return kTRUE;//rejected (both rejected, returned kTRUE)
177 return kFALSE;//accepted, at least one accepted (returned kFALSE)
178}
179/******************************************************************/
180
181ClassImp(AliAODAndCut)
182
183Bool_t AliAODAndCut::Rejected(AliVAODParticle * p) const
184{
185 //returns true when rejected
186 //OR operation is a little bit misleading but is correct
187 //User wants to build logical cuts with natural (positive) logic
188 //while AODAN use inernally reverse (returns true when rejected)
189 if (fFirst->Rejected(p) || fSecond->Rejected(p)) return kTRUE;//rejected (any of two rejected(returned kTRUE) )
190 return kFALSE;//accepted (both accepted (returned kFALSE))
191}
192/******************************************************************/