27 #include "AliAODTrack.h" 41 fSelectNonITSrefitTracks(kTRUE)
43 fHybridFilterBits[0] = -1;
44 fHybridFilterBits[1] = -1;
47 AliEmcalAODHybridTrackCuts::AliEmcalAODHybridTrackCuts(
const char *name):
49 fSelectNonITSrefitTracks(kTRUE)
55 AliAODTrack *aodtrack =
dynamic_cast<AliAODTrack *
>(o);
57 bool selectionresult = aodtrack->IsHybridGlobalConstrainedGlobal();
59 if((
fSelectNonITSrefitTracks ==
false) && (!(aodtrack->GetStatus() & AliVTrack::kITSrefit))) selectionresult =
false;
107 AliInfoStream() <<
"Running test for 2010 Definition with non-refit tracks" << std::endl;
108 AliAODTrack testCat1WithRefit, testCat2WithRefit, testCat2WithoutRefit, testNoHybrid;
109 testCat1WithRefit.SetIsHybridGlobalConstrainedGlobal();
110 testCat2WithRefit.SetIsHybridGlobalConstrainedGlobal();
111 testCat2WithoutRefit.SetIsHybridGlobalConstrainedGlobal();
112 testCat1WithRefit.SetStatus(AliVTrack::kITSrefit);
113 testCat2WithRefit.SetStatus(AliVTrack::kITSrefit);
114 testCat1WithRefit.SetFilterMap(BIT(8));
115 testCat2WithRefit.SetFilterMap(BIT(4));
116 testCat2WithoutRefit.SetFilterMap(BIT(4));
120 if(!result_cat1_wrefit){
121 AliErrorStream() <<
"Track CAT1 not selected as hybrid track" << std::endl;
126 AliErrorStream() <<
"Hybrid track information not found for track CAT1" << std::endl;
130 AliErrorStream() <<
"Track not selected as hybrid track CAT1: " << int(tracktype->GetHybridTrackType()) << std::endl;
137 if(!result_cat2_wrefit){
138 AliErrorStream() <<
"Track CAT2 not selected as hybrid track" << std::endl;
143 AliErrorStream() <<
"Hybrid track information not found for track CAT2" << std::endl;
147 AliErrorStream() <<
"Track not selected as hybrid track CAT2: " << int(tracktype->GetHybridTrackType()) << std::endl;
154 if(!result_cat2_worefit){
155 AliErrorStream() <<
"Track CAT3 not selected as hybrid track" << std::endl;
160 AliErrorStream() <<
"Hybrid track information not found for track CAT3" << std::endl;
164 AliErrorStream() <<
"Track not selected as hybrid track CAT3: " << int(tracktype->GetHybridTrackType()) << std::endl;
171 if(result_nohybrid || result_nohybrid.GetUserInfo()){
172 AliErrorStream() <<
"Non-hybrid track selected or user object attached " << std::endl;
176 return nfailure == 0;
180 AliInfoStream() <<
"Running test for 2010 Definition without non-refit tracks" << std::endl;
181 AliAODTrack testCat1WithRefit, testCat2WithRefit, testCat2WithoutRefit, testNoHybrid;
182 testCat1WithRefit.SetIsHybridGlobalConstrainedGlobal();
183 testCat2WithRefit.SetIsHybridGlobalConstrainedGlobal();
184 testCat2WithoutRefit.SetIsHybridGlobalConstrainedGlobal();
185 testCat1WithRefit.SetStatus(AliVTrack::kITSrefit);
186 testCat2WithRefit.SetStatus(AliVTrack::kITSrefit);
187 testCat1WithRefit.SetFilterMap(BIT(8));
188 testCat2WithRefit.SetFilterMap(BIT(4));
189 testCat2WithoutRefit.SetFilterMap(BIT(4));
193 if(!result_cat1_wrefit) {
194 AliErrorStream() <<
"Track CAT1 not selected as hybrid track" << std::endl;
199 AliErrorStream() <<
"Hybrid track information not found for track CAT1" << std::endl;
203 AliErrorStream() <<
"Track not selected as hybrid track CAT1: " << int(tracktype->GetHybridTrackType()) << std::endl;
210 if(!result_cat2_wrefit){
211 AliErrorStream() <<
"Track CAT2 not selected as hybrid track" << std::endl;
216 AliErrorStream() <<
"Hybrid track information not found for track CAT2" << std::endl;
220 AliErrorStream() <<
"Track not selected as hybrid track CAT2: " << int(tracktype->GetHybridTrackType()) << std::endl;
227 if(result_cat2_worefit || result_cat2_worefit.GetUserInfo()) {
228 AliErrorStream() <<
"Non-refit track selected or user object attached " << std::endl;
233 if(result_nohybrid || result_nohybrid.GetUserInfo()){
234 AliErrorStream() <<
"Non-hybrid track selected or user object attached " << std::endl;
238 return nfailure == 0;
242 AliInfoStream() <<
"Running test for 2011 Definition" << std::endl;
243 AliAODTrack testCat1, testCat2, testNoHybrid;
244 testCat1.SetIsHybridGlobalConstrainedGlobal(kTRUE);
245 testCat2.SetIsHybridGlobalConstrainedGlobal(kTRUE);
246 testCat1.SetStatus(AliVTrack::kITSrefit);
247 testCat2.SetStatus(AliVTrack::kITSrefit);
248 testCat1.SetFilterMap(BIT(8));
249 testCat2.SetFilterMap(BIT(9));
255 AliErrorStream() <<
"Track CAT1 not selected as hybrid track" << std::endl;
260 AliErrorStream() <<
"Hybrid track information not found for track CAT1" << std::endl;
264 AliErrorStream() <<
"Track not selected as hybrid track CAT1: " << int(tracktype->GetHybridTrackType()) << std::endl;
272 AliErrorStream() <<
"Track CAT2 not selected as hybrid track" << std::endl;
277 AliErrorStream() <<
"Hybrid track information not found for track CAT2" << std::endl;
281 AliErrorStream() <<
"Track not selected as hybrid track CAT2: " << int(tracktype->GetHybridTrackType()) << std::endl;
288 if(result_nohybrid || result_nohybrid.GetUserInfo()){
289 AliErrorStream() <<
"Non-hybrid track selected or user object attached " << std::endl;
293 return nfailure == 0;
AliEmcalAODHybridTrackCuts * fDef2010woRefit
Hybrid track definition from 2010 excluding non-refit tracks.
AliEmcalAODHybridTrackCuts * fDef2011
Hybrid track definition from 2011 e.
bool TestDef2010wRefit() const
Test for hybrid tracks according to the 2010 definition including non-refit tracks.
TestAliEmcalAODHybridTrackCuts()
void Init()
Initializing track selection objects.
Structure containing the result of a given track selection step.
AliEmcalAODHybridTrackCuts * fDef2010wRefit
Hybrid track definition from 2010 including non-refit tracks.
Namespace for EMCAL framework classes and task.
void SetSelectNonITSrefitTracks(bool doReject)
Switch on/off selection of hybrid tracks without ITSrefit.
virtual ~TestAliEmcalAODHybridTrackCuts()
Destructor.
bool TestDef2011() const
Test for hybrid tracks according to the 2011 definition.
void SetHybridFilterBits(Int_t globalfilterbit, Int_t constrainedfilterbit)
Set the filterbits used to distinguish the different hybrid track types.
Namespace for PWG framework classes.
bool TestDef2010woRefit() const
Test for hybrid tracks according to the 2010 definition excluding non-refit tracks.
Cut class selecting hybrid tracks using the IsHybrid function.
void SetUserInfo(TObject *userinfo)
Bool_t fSelectNonITSrefitTracks
Select non-refit tracks.
Int_t fHybridFilterBits[2]
Bit numbers for various hybrid filter bits.
bool RunAllTests() const
Run all unit tests for the class AliEmcalAODHybridTrackCuts.
Interface for a cut class returning selection status and user information.
virtual AliEmcalTrackSelResultPtr IsSelected(TObject *o)
Run track selection of hybrid tracks.