fUsePID(kFALSE),
fPidHF(0),
fWhyRejection(0),
-fRemoveDaughtersFromPrimary(kFALSE)
+fRemoveDaughtersFromPrimary(kFALSE),
+fOptPileup(0),
+fMinContrPileup(3),
+fMinDzPileup(0.6)
{
//
// Default Constructor
fUsePID(source.fUsePID),
fPidHF(0),
fWhyRejection(source.fWhyRejection),
- fRemoveDaughtersFromPrimary(source.fRemoveDaughtersFromPrimary)
+ fRemoveDaughtersFromPrimary(source.fRemoveDaughtersFromPrimary),
+ fOptPileup(source.fOptPileup),
+ fMinContrPileup(source.fMinContrPileup),
+ fMinDzPileup(source.fMinDzPileup)
{
//
// Copy constructor
SetPidHF(source.GetPidHF());
fWhyRejection=source.fWhyRejection;
fRemoveDaughtersFromPrimary=source.fRemoveDaughtersFromPrimary;
+ fOptPileup=source.fOptPileup;
+ fMinContrPileup=source.fMinContrPileup;
+ fMinDzPileup=source.fMinDzPileup;
if(source.GetTrackCuts()) AddTrackCuts(source.GetTrackCuts());
if(source.fPtBinLimits) SetPtBins(source.fnPtBinLimits,source.fPtBinLimits);
}
}
//---------------------------------------------------------------------------
-Bool_t AliRDHFCuts::IsEventSelected(AliVEvent *event) const {
+Bool_t AliRDHFCuts::IsEventSelected(AliVEvent *event) {
//
// Event selection
//
//if(fTriggerMask && event->GetTriggerMask()!=fTriggerMask) return kFALSE;
+ fWhyRejection=0;
+
// multiplicity cuts no implemented yet
+
+
const AliVVertex *vertex = event->GetPrimaryVertex();
if(!vertex) return kFALSE;
if(vertex->GetNContributors()<fMinVtxContr) return kFALSE;
+ // switch to settings for 1-pad cls in TPC
+ if(fPidHF) {
+ if(event->GetRunNumber()>121693) fPidHF->SetOnePad(kTRUE);
+ }
+
+ if(fOptPileup==kRejectPileupEvent){
+ Int_t cutc=(Int_t)fMinContrPileup;
+ Double_t cutz=(Double_t)fMinDzPileup;
+ if(event->IsPileupFromSPD(cutc,cutz,3.,2.,10.)) {
+ fWhyRejection=1;
+ return kFALSE;
+ }
+ }
+
return kTRUE;
}
//---------------------------------------------------------------------------
esdTrack.RelateToVertex(primary,0.,3.);
if(!cuts->IsSelected(&esdTrack)) retval = kFALSE;
+ if(fOptPileup==kRejectTracksFromPileupVertex){
+ // to be implemented
+ // we need either to have here the AOD Event,
+ // or to have the pileup vertex object
+ }
return retval;
}
//---------------------------------------------------------------------------
if(fUsePID!=obj->fUsePID) { printf("Use PID %d %d\n",(Int_t)fUsePID,(Int_t)obj->fUsePID); areEqual=kFALSE;}
if(fRemoveDaughtersFromPrimary!=obj->fRemoveDaughtersFromPrimary) {printf("Remove daughters from vtx %d %d\n",(Int_t)fRemoveDaughtersFromPrimary,(Int_t)obj->fRemoveDaughtersFromPrimary); areEqual=kFALSE;}
+ if(fTrackCuts){
+ if(fTrackCuts->GetMinNClusterTPC()!=obj->fTrackCuts->GetMinNClusterTPC()) {printf("MinNClsTPC %d %d\n",fTrackCuts->GetMinNClusterTPC(),obj->fTrackCuts->GetMinNClusterTPC()); areEqual=kFALSE;}
- if(fTrackCuts->GetMinNClusterTPC()!=obj->fTrackCuts->GetMinNClusterTPC()) {printf("MinNClsTPC %d %d\n",fTrackCuts->GetMinNClusterTPC(),obj->fTrackCuts->GetMinNClusterTPC()); areEqual=kFALSE;}
-
- if(fTrackCuts->GetMinNClustersITS()!=obj->fTrackCuts->GetMinNClustersITS()) {printf("MinNClsITS %d %d\n",fTrackCuts->GetMinNClustersITS(),obj->fTrackCuts->GetMinNClustersITS()); areEqual=kFALSE;}
+ if(fTrackCuts->GetMinNClustersITS()!=obj->fTrackCuts->GetMinNClustersITS()) {printf("MinNClsITS %d %d\n",fTrackCuts->GetMinNClustersITS(),obj->fTrackCuts->GetMinNClustersITS()); areEqual=kFALSE;}
- if(TMath::Abs(fTrackCuts->GetMaxChi2PerClusterTPC()-obj->fTrackCuts->GetMaxChi2PerClusterTPC())>1.e-10) {printf("MaxChi2ClsTPC %f %f\n",fTrackCuts->GetMaxChi2PerClusterTPC(),obj->fTrackCuts->GetMaxChi2PerClusterTPC()); areEqual=kFALSE;}
+ if(TMath::Abs(fTrackCuts->GetMaxChi2PerClusterTPC()-obj->fTrackCuts->GetMaxChi2PerClusterTPC())>1.e-10) {printf("MaxChi2ClsTPC %f %f\n",fTrackCuts->GetMaxChi2PerClusterTPC(),obj->fTrackCuts->GetMaxChi2PerClusterTPC()); areEqual=kFALSE;}
- if(fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)!=obj->fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)) {printf("ClusterReq SPD %d %d\n",fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD),obj->fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)); areEqual=kFALSE;}
+ if(fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)!=obj->fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)) {printf("ClusterReq SPD %d %d\n",fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD),obj->fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)); areEqual=kFALSE;}
+ }
if(fCutsRD) {
for(Int_t iv=0;iv<fnVars;iv++) {
return areEqual;
}
+//---------------------------------------------------------------------------
+void AliRDHFCuts::MakeTable() const {
+ //
+ // print cuts values in table format
+ //
+
+ TString ptString = "pT range";
+ if(fVarNames && fPtBinLimits && fCutsRD){
+ TString firstLine(Form("* %-15s",ptString.Data()));
+ for (Int_t ivar=0; ivar<fnVars; ivar++){
+ firstLine+=Form("* %-15s ",fVarNames[ivar].Data());
+ if (ivar == fnVars){
+ firstLine+="*\n";
+ }
+ }
+ Printf("%s",firstLine.Data());
+
+ for (Int_t ipt=0; ipt<fnPtBins; ipt++){
+ TString line;
+ if (ipt==fnPtBins-1){
+ line=Form("* %5.1f < pt < inf ",fPtBinLimits[ipt]);
+ }
+ else{
+ line=Form("* %5.1f < pt < %4.1f ",fPtBinLimits[ipt],fPtBinLimits[ipt+1]);
+ }
+ for (Int_t ivar=0; ivar<fnVars; ivar++){
+ line+=Form("* %-15f ",fCutsRD[GetGlobalIndex(ivar,ipt)]);
+ }
+ Printf("%s",line.Data());
+ }
+
+ }
+
+
+ return;
+}