gammaV0Cuts->SetPdgCodes(22,11,11); // mother, daughter1 and 2
// add default PID cuts (defined in AliDielectronPID)
- gammaV0Cuts->SetDefaultPID(16);
+ // requirement can be set to at least one(kAny) of the tracks or to both(kBoth)
+ gammaV0Cuts->SetDefaultPID(16, AliDielectronV0Cuts::kAny);
// add the pair cuts for V0 candidates
gammaV0Cuts->AddCut(AliDielectronVarManager::kCosPointingAngle, TMath::Cos(0.02), 1.0, kFALSE);
fNegPdg(0),
fPosPdg(0),
fPID(-1),
+ fPIDCutType(kBoth),
fOrbit(0),
fPeriod(0),
fBunchCross(0)
fNegPdg(0),
fPosPdg(0),
fPID(-1),
+ fPIDCutType(kBoth),
fOrbit(0),
fPeriod(0),
fBunchCross(0)
fV0TrackArr.ResetAllBits();
// basic quality cut, /*at least one*/ both of the V0 daughters has to fullfill
+ // always update ::Print accordingly
AliDielectronVarCuts dauQAcuts1;
- dauQAcuts1.AddCut(AliDielectronVarManager::kPt, 0.05, 100.0);
- dauQAcuts1.AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
- dauQAcuts1.AddCut(AliDielectronVarManager::kNclsTPC, 50.0, 160.0);
+ dauQAcuts1.AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
dauQAcuts1.AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
+ dauQAcuts1.AddCut(AliDielectronVarManager::kKinkIndex0, 0.0);
+ dauQAcuts1.AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
+ dauQAcuts1.AddCut(AliDielectronVarManager::kPt, 0.05, 100.0);
AliDielectronTrackCuts dauQAcuts2;
// dauQAcuts2.SetRequireITSRefit(kTRUE);
dauQAcuts2.SetRequireTPCRefit(kTRUE);
for (Int_t iv=0; iv<esdev->GetNumberOfV0s(); ++iv){
AliESDv0 *v = esdev->GetV0(iv);
if(!v) continue;
-
+
// check the v0 finder
if( v->GetOnFlyStatus() && fV0finder==AliDielectronV0Cuts::kOffline ) continue;
if(!v->GetOnFlyStatus() && fV0finder==AliDielectronV0Cuts::kOnTheFly ) continue;
// PID default cuts
if(fPID>=0) {
- if( !dauPIDcuts.IsSelected(trNeg) ) continue;
- if( !dauPIDcuts.IsSelected(trPos) ) continue;
+ Bool_t selected=kFALSE;
+ selected=dauPIDcuts.IsSelected(trNeg);
+ if(fPIDCutType==kBoth) selected &= dauPIDcuts.IsSelected(trPos);
+ if(fPIDCutType==kAny) selected |= dauPIDcuts.IsSelected(trPos);
+ if(!selected) continue;
}
// basic track cuts
}
else if(ev->IsA() == AliAODEvent::Class()) {
const AliAODEvent *aodEv = static_cast<const AliAODEvent*>(ev);
+ if(!aodEv->GetV0s()) return; // protection for nano AODs
// loop over vertices
for (Int_t ivertex=0; ivertex<aodEv->GetNumberOfV0s(); ++ivertex){
// PID default cuts
if(fPID>=0) {
- if( !dauPIDcuts.IsSelected(trNeg) ) continue;
- if( !dauPIDcuts.IsSelected(trPos) ) continue;
+ Bool_t selected=kFALSE;
+ selected=dauPIDcuts.IsSelected(trNeg);
+ if(fPIDCutType==kBoth) selected &= dauPIDcuts.IsSelected(trPos);
+ if(fPIDCutType==kAny) selected |= dauPIDcuts.IsSelected(trPos);
+ if(!selected) continue;
}
// basic track cuts
fV0TrackArr.SetBitNumber(trPos->GetID());
}
}
- //printf("there are %d V0s in the event \n",nV0stored);
+ // printf("there are %d V0s in the event \n",nV0stored);
}
else
return;
fPeriod = ev->GetPeriodNumber();
return kTRUE;
}
+
+//________________________________________________________________________
+void AliDielectronV0Cuts::Print(const Option_t* /*option*/) const
+{
+ //
+ // Print cuts and the range
+ //
+ printf(" V0 cuts:\n");
+ printf(" V0 finder mode: %s \n",(fV0finder ==kOnTheFly ? "One-The-Fly":
+ (fV0finder==kOffline ? "Offline":
+ "One-The-Fly+Offline") ) );
+ AliDielectronVarCuts::Print();
+
+ printf(" V0 daughter cuts (applied to both):\n");
+ AliDielectronVarCuts dauQAcuts1;
+ dauQAcuts1.AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
+ dauQAcuts1.AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
+ dauQAcuts1.AddCut(AliDielectronVarManager::kKinkIndex0, 0.0);
+ dauQAcuts1.AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
+ dauQAcuts1.AddCut(AliDielectronVarManager::kPt, 0.05, 100.0);
+ dauQAcuts1.Print();
+ AliDielectronTrackCuts dauQAcuts2;
+ // dauQAcuts2.SetRequireITSRefit(kTRUE);
+ dauQAcuts2.SetRequireTPCRefit(kTRUE);
+ // dauQAcuts2.Print(); //TODO activate as soon as implemented
+
+ if(fPID>=0) {
+ printf(" V0 daughter PID cuts (applied to %s):\n",(fPIDCutType==kBoth?"both":"any"));
+ AliDielectronPID dauPIDcuts;
+ dauPIDcuts.SetDefaults(fPID);
+ dauPIDcuts.Print(); //TODO activate as soon as implemented
+ }
+
+}