* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-
-/* $Id$ */
-
//
// Cut menagement class implemented by the
// ALICE Heavy Flavour Electron Group
#include "AliCFTrackKineCuts.h"
#include "AliCFTrackQualityCuts.h"
#include "AliESDtrack.h"
+#include "AliHFEextraEventCuts.h"
#include "AliHFEcuts.h"
const Char_t *AliHFEcuts::fgkMCCutName[AliHFEcuts::kNcutStepsMCTrack] = {
"MCGenerated",
- "MCGeneratedZOutNoPileUp",
+ "MCGeneratedZOutNoPileUpCentralityFine",
"MCGeneratedEventCut",
"MCInAcceptance"
};
"HFEDCA"
};
+const Char_t * AliHFEcuts::fgkSecvtxCutName[AliHFEcuts::kNcutStepsSecvtxTrack] = {
+ "HFESecvtx"
+};
+
const Char_t * AliHFEcuts::fgkEventCutName[AliHFEcuts::kNcutStepsEvent] = {
"EventStepGenerated",
"EventStepRecNoCut",
fSigmaToVtx(0.),
fVertexRangeZ(20.),
fTOFPIDStep(kFALSE),
+ fTOFMISMATCHStep(kFALSE),
+ fUseMixedVertex(kTRUE),
+ fIsIPSigmacut(kFALSE),
fHistQA(0x0),
fCutList(0x0),
fDebugLevel(0)
fSigmaToVtx(0.),
fVertexRangeZ(20.),
fTOFPIDStep(kFALSE),
+ fTOFMISMATCHStep(kFALSE),
+ fUseMixedVertex(kTRUE),
+ fIsIPSigmacut(kFALSE),
fHistQA(0x0),
fCutList(0x0),
fDebugLevel(0)
memset(fProdVtx, 0, sizeof(Double_t) * 4);
memset(fDCAtoVtx, 0, sizeof(Double_t) * 2);
memset(fPtRange, 0, sizeof(Double_t) * 2);
+ memset(fIPCutParams, 0, sizeof(Float_t) * 4);
}
//__________________________________________________________________
fSigmaToVtx(0),
fVertexRangeZ(20.),
fTOFPIDStep(kFALSE),
+ fTOFMISMATCHStep(kFALSE),
+ fUseMixedVertex(kTRUE),
+ fIsIPSigmacut(kFALSE),
fHistQA(0x0),
fCutList(0x0),
fDebugLevel(0)
target.fSigmaToVtx = fSigmaToVtx;
target.fVertexRangeZ = fVertexRangeZ;
target.fTOFPIDStep = fTOFPIDStep;
+ target.fTOFMISMATCHStep = fTOFMISMATCHStep;
+ target.fUseMixedVertex = fUseMixedVertex;
+ target.fIsIPSigmacut = fIsIPSigmacut;
target.fDebugLevel = 0;
memcpy(target.fProdVtx, fProdVtx, sizeof(Double_t) * 4);
memcpy(target.fDCAtoVtx, fDCAtoVtx, sizeof(Double_t) * 2);
memcpy(target.fPtRange, fPtRange, sizeof(Double_t) *2);
+ memcpy(target.fIPCutParams, fIPCutParams, sizeof(Float_t) * 4);
// Copy cut List
if(target.fCutList){
if(target.fCutList) target.fCutList->SetOwner(); // Coverity
}
if(target.fHistQA){
- target.fHistQA->Clear();
delete target.fHistQA;
- target.fHistQA = NULL;
}
if(fHistQA){
// If the QA list was already produced, then we create it new, loop over the cuts and connect all the histos with this list
target.fHistQA = new TList;
target.fHistQA->SetName(Form("%s_CutQAhistograms", GetName()));
- fHistQA->SetOwner(kFALSE);
+ fHistQA->SetOwner(kTRUE);
TIter cit(target.fCutList);
TObjArray *clist = NULL;
AliCFCutBase *co = NULL;
delete fCutList;
}
fCutList = 0x0;
- if(fHistQA) fHistQA->Clear();
- delete fHistQA;
+ if(fHistQA) delete fHistQA;
}
//__________________________________________________________________
if(IsQAOn()){
fHistQA = new TList;
fHistQA->SetName(Form("%s_CutQAhistograms", GetName()));
- fHistQA->SetOwner(kFALSE);
+ fHistQA->SetOwner(kTRUE);
}
// Call all the setters for the cuts
arr->SetName("fEvGenCuts");
arr->AddLast(evGenCuts);
} else {
- AliCFEventRecCuts *evRecCuts = new AliCFEventRecCuts((Char_t *)"fCutsEvRec", (Char_t *)"Event Reconstructed cuts");
- //evRecCuts->SetNTracksCut(1);
- evRecCuts->SetRequireVtxCuts(kTRUE);
- //evRecCuts->SetVertexXCut(-1, 1);
- //evRecCuts->SetVertexYCut(-1, 1);
- //evRecCuts->SetVertexZCut(-30, 30);
- evRecCuts->SetVertexZCut(-fVertexRangeZ, fVertexRangeZ);
- evRecCuts->SetVertexNContributors(1,(Int_t)1.e9);
- if(IsQAOn()) evRecCuts->SetQAOn(fHistQA);
-
- arr->SetName("fEvRecCuts");
- arr->AddLast(evRecCuts);
+
+ if(!fUseMixedVertex) {
+ AliCFEventRecCuts *evRecCuts = new AliCFEventRecCuts((Char_t *)"fCutsEvRec", (Char_t *)"Event Reconstructed cuts");
+ //evRecCuts->SetNTracksCut(1);
+ evRecCuts->SetRequireVtxCuts(kTRUE);
+ //evRecCuts->SetVertexXCut(-1, 1);
+ //evRecCuts->SetVertexYCut(-1, 1);
+ //evRecCuts->SetVertexZCut(-30, 30);
+ evRecCuts->SetVertexZCut(-fVertexRangeZ, fVertexRangeZ);
+ evRecCuts->SetVertexNContributors(1,(Int_t)1.e9);
+ if(IsQAOn()) evRecCuts->SetQAOn(fHistQA);
+ arr->SetName("fEvRecCuts");
+ arr->AddLast(evRecCuts);
+ } else {
+ AliHFEextraEventCuts *evRecCuts = new AliHFEextraEventCuts((Char_t *)"fCutsEvRec", (Char_t *)"Event Reconstructed cuts");
+ evRecCuts->SetRequireVtxCuts(kTRUE);
+ evRecCuts->SetUseMixedVertex();
+ evRecCuts->SetVertexZCut(-fVertexRangeZ, fVertexRangeZ);
+ //evRecCuts->SetVertexNContributors(1,(Int_t)1.e9);
+ if(IsQAOn()) evRecCuts->SetQAOn(fHistQA);
+ arr->SetName("fEvRecCuts");
+ arr->AddLast(evRecCuts);
+ }
}
fCutList->AddLast(arr);
}
AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTRD","Extra cuts from the HFE group");
if(fMinTrackletsTRD > 0.) hfecuts->SetMinTrackletsTRD(fMinTrackletsTRD);
if(fTOFPIDStep) hfecuts->SetTOFPID(kTRUE);
+ if(fTOFMISMATCHStep) hfecuts->SetTOFMISMATCH(kTRUE);
if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
hfecuts->SetDebugLevel(fDebugLevel);
//
AliDebug(2, "Called\n");
AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupDCA","Extra cuts from the HFE group");
- hfecuts->SetMinHFEImpactParamR();
- //hfecuts->SetMinHFEImpactParamNsigmaR();
+ hfecuts->SetMinHFEImpactParamR(fIPCutParams,fIsIPSigmacut);
if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
hfecuts->SetDebugLevel(fDebugLevel);
// Checks the cuts without using the correction framework manager
//
AliDebug(2, "Called\n");
- TString stepnames[kNcutStepsMCTrack + kNcutStepsRecTrack + kNcutStepsDETrack + 1] = {"fPartGenCuts","fPartEvCutPileupZ","fPartEvCut","fPartAccCuts","fPartRecNoCuts","fPartRecKineITSTPCCuts", "fPartPrimCuts", "fPartHFECutsITS","fPartHFECutsTRD","fPartHFECutsDca"};
+ TString stepnames[kNcutStepsMCTrack + kNcutStepsRecTrack + kNcutStepsDETrack + kNcutStepsSecvtxTrack + 1] = {"fPartGenCuts","fPartEvCutPileupZ","fPartEvCut","fPartAccCuts","fPartRecNoCuts","fPartRecKineITSTPCCuts", "fPartPrimCuts", "fPartHFECutsITS","fPartHFECutsTRD","fPartHFECutsDca", "fPartHFECutsSecvtx"};
AliDebug(2, Form("Doing cut %s", stepnames[step].Data()));
TObjArray *cuts = dynamic_cast<TObjArray *>(fCutList->FindObject(stepnames[step].Data()));
if(!cuts) return kTRUE;