#include "AliCFAcceptanceCuts.h"
#include "AliCFCutBase.h"
#include "AliCFEventGenCuts.h"
-#include "AliCFEventRecCuts.h"
#include "AliCFManager.h"
#include "AliCFParticleGenCuts.h"
#include "AliCFTrackIsPrimaryCuts.h"
#include "AliCFTrackQualityCuts.h"
#include "AliESDtrack.h"
#include "AliHFEextraEventCuts.h"
+#include "AliMCEvent.h"
+#include "AliVEvent.h"
#include "AliHFEcuts.h"
AliHFEcuts::AliHFEcuts():
TNamed(),
fRequirements(0),
- fTPCclusterDef(AliHFEextraCuts::kFound),
- fTPCratioDef(AliHFEextraCuts::kFoundOverFindable),
+ fTPCclusterDef(0),
+ fTPCratioDef(0),
fMinClustersTPC(0),
+ fMinClustersTPCPID(0),
fMinClustersITS(0),
fMinTrackletsTRD(0),
+ fMaxChi2TRD(-1.),
fCutITSPixel(0),
fCheckITSLayerStatus(kTRUE),
+ fCutITSDrift(0),
fMaxChi2clusterITS(-1.),
fMaxChi2clusterTPC(0.),
fMinClusterRatioTPC(0.),
fVertexRangeZ(20.),
+ fTRDtrackletsExact(kFALSE),
fTOFPIDStep(kFALSE),
+ fMatchTOFLabel(kFALSE),
fTOFMISMATCHStep(kFALSE),
fTPCPIDCLEANUPStep(kFALSE),
+ fITSpatternCut(kFALSE),
fUseMixedVertex(kTRUE),
+ fUseSPDVertex(kFALSE),
+ fUseCorrelationVertex(kFALSE),
+ fSPDVtxResolution(kFALSE),
+ fPApileupCut(kFALSE),
fIsIPSigmacut(kFALSE),
+ fIsIPcharge(kFALSE),
+ fIsIPOpp(kFALSE),
fFractionOfSharedTPCClusters(-1.0),
fMaxImpactParameterRpar(kFALSE),
+ fAdditionalStatusRequirement(0),
+ fTOFsignaldx(-1.0),
+ fTOFsignaldz(-1.0),
+ fAODFilterBit(-1),
+ fRejectKinkDaughters(kTRUE),
+ fRejectKinkMothers(kTRUE),
fHistQA(0x0),
fCutList(0x0),
fDebugLevel(0)
// Dummy Constructor
//
memset(fProdVtx, 0, sizeof(Double_t) * 4);
+ memset(fProdVtxZ, 0, sizeof(Double_t) * 2);
memset(fDCAtoVtx, 0, sizeof(Double_t) * 2);
memset(fPtRange, 0, sizeof(Double_t) * 2);
memset(fIPCutParams, 0, sizeof(Float_t) * 4);
memset(fSigmaToVtx, 0, sizeof(Double_t) * 3);
-
+ fEtaRange[0] = -0.8; fEtaRange[1] = 0.8;
+ fPhiRange[0] = -1.; fPhiRange[1] = -1.;
}
//__________________________________________________________________
AliHFEcuts::AliHFEcuts(const Char_t *name, const Char_t *title):
TNamed(name, title),
fRequirements(0),
- fTPCclusterDef(AliHFEextraCuts::kFound),
- fTPCratioDef(AliHFEextraCuts::kFoundOverFindable),
+ fTPCclusterDef(0),
+ fTPCratioDef(0),
fMinClustersTPC(0),
+ fMinClustersTPCPID(0),
fMinClustersITS(0),
fMinTrackletsTRD(0),
+ fMaxChi2TRD(-1.),
fCutITSPixel(0),
fCheckITSLayerStatus(kTRUE),
+ fCutITSDrift(0),
fMaxChi2clusterITS(-1.),
fMaxChi2clusterTPC(0.),
fMinClusterRatioTPC(0.),
fVertexRangeZ(20.),
+ fTRDtrackletsExact(kFALSE),
fTOFPIDStep(kFALSE),
+ fMatchTOFLabel(kFALSE),
fTOFMISMATCHStep(kFALSE),
fTPCPIDCLEANUPStep(kFALSE),
+ fITSpatternCut(kFALSE),
fUseMixedVertex(kTRUE),
+ fUseSPDVertex(kFALSE),
+ fUseCorrelationVertex(kFALSE),
+ fSPDVtxResolution(kFALSE),
+ fPApileupCut(kFALSE),
fIsIPSigmacut(kFALSE),
+ fIsIPcharge(kFALSE),
+ fIsIPOpp(kFALSE),
fFractionOfSharedTPCClusters(-1.0),
fMaxImpactParameterRpar(kFALSE),
+ fAdditionalStatusRequirement(0),
+ fTOFsignaldx(-1.0),
+ fTOFsignaldz(-1.0),
+ fAODFilterBit(-1),
+ fRejectKinkDaughters(kTRUE),
+ fRejectKinkMothers(kTRUE),
fHistQA(0x0),
fCutList(0x0),
fDebugLevel(0)
// Default Constructor
//
memset(fProdVtx, 0, sizeof(Double_t) * 4);
+ memset(fProdVtxZ, 0, sizeof(Double_t) * 2);
memset(fDCAtoVtx, 0, sizeof(Double_t) * 2);
memset(fPtRange, 0, sizeof(Double_t) * 2);
memset(fIPCutParams, 0, sizeof(Float_t) * 4);
memset(fSigmaToVtx, 0, sizeof(Double_t) * 3);
+ fEtaRange[0] = -0.8; fEtaRange[1] = 0.8;
+ fPhiRange[0] = -1.; fPhiRange[1] = -1.;
}
//__________________________________________________________________
fTPCclusterDef(c.fTPCclusterDef),
fTPCratioDef(c.fTPCratioDef),
fMinClustersTPC(0),
+ fMinClustersTPCPID(0),
fMinClustersITS(0),
fMinTrackletsTRD(0),
+ fMaxChi2TRD(-1.),
fCutITSPixel(0),
fCheckITSLayerStatus(0),
+ fCutITSDrift(0),
fMaxChi2clusterITS(-1.),
fMaxChi2clusterTPC(0),
fMinClusterRatioTPC(0),
fVertexRangeZ(20.),
+ fTRDtrackletsExact(kFALSE),
fTOFPIDStep(kFALSE),
+ fMatchTOFLabel(kFALSE),
fTOFMISMATCHStep(kFALSE),
fTPCPIDCLEANUPStep(kFALSE),
+ fITSpatternCut(c.fITSpatternCut),
fUseMixedVertex(kTRUE),
+ fUseSPDVertex(kFALSE),
+ fUseCorrelationVertex(c.fUseCorrelationVertex),
+ fSPDVtxResolution(c.fSPDVtxResolution),
+ fPApileupCut(c.fPApileupCut),
fIsIPSigmacut(kFALSE),
+ fIsIPcharge(kFALSE),
+ fIsIPOpp(kFALSE),
fFractionOfSharedTPCClusters(-1.0),
fMaxImpactParameterRpar(kFALSE),
+ fAdditionalStatusRequirement(0),
+ fTOFsignaldx(-1.0),
+ fTOFsignaldz(-1.0),
+ fAODFilterBit(-1),
+ fRejectKinkDaughters(c.fRejectKinkDaughters),
+ fRejectKinkMothers(c.fRejectKinkMothers),
fHistQA(0x0),
fCutList(0x0),
fDebugLevel(0)
target.fTPCclusterDef = fTPCclusterDef;
target.fTPCratioDef = fTPCratioDef;
target.fMinClustersTPC = fMinClustersTPC;
+ target.fMinClustersTPCPID = fMinClustersTPCPID;
target.fMinClustersITS = fMinClustersITS;
target.fMinTrackletsTRD = fMinTrackletsTRD;
+ target.fMaxChi2TRD = fMaxChi2TRD;
target.fCutITSPixel = fCutITSPixel;
target.fCheckITSLayerStatus = fCheckITSLayerStatus;
+ target.fCutITSDrift = fCutITSDrift;
target.fMaxChi2clusterITS = fMaxChi2clusterITS;
target.fMaxChi2clusterTPC = fMaxChi2clusterTPC;
target.fMinClusterRatioTPC = fMinClusterRatioTPC;
target.fVertexRangeZ = fVertexRangeZ;
+ target.fTRDtrackletsExact = fTRDtrackletsExact;
target.fTOFPIDStep = fTOFPIDStep;
+ target.fMatchTOFLabel = fMatchTOFLabel;
target.fTOFMISMATCHStep = fTOFMISMATCHStep;
target.fTPCPIDCLEANUPStep = fTPCPIDCLEANUPStep;
target.fUseMixedVertex = fUseMixedVertex;
+ target.fUseSPDVertex = fUseSPDVertex;
+ target.fUseCorrelationVertex = fUseCorrelationVertex;
+ target.fSPDVtxResolution = fSPDVtxResolution;
+ target.fPApileupCut = fPApileupCut;
target.fIsIPSigmacut = fIsIPSigmacut;
+ target.fIsIPcharge = fIsIPcharge;
+ target.fIsIPOpp = fIsIPOpp;
target.fFractionOfSharedTPCClusters = fFractionOfSharedTPCClusters;
target.fMaxImpactParameterRpar = fMaxImpactParameterRpar;
+ target.fAdditionalStatusRequirement = fAdditionalStatusRequirement;
+ target.fTOFsignaldx = fTOFsignaldx;
+ target.fTOFsignaldz = fTOFsignaldz;
+ target.fAODFilterBit = fAODFilterBit;
+ target.fRejectKinkDaughters = fRejectKinkDaughters;
+ target.fRejectKinkMothers = fRejectKinkMothers;
target.fDebugLevel = 0;
memcpy(target.fProdVtx, fProdVtx, sizeof(Double_t) * 4);
+ memcpy(target.fProdVtxZ, fProdVtxZ, sizeof(Double_t) * 2);
memcpy(target.fDCAtoVtx, fDCAtoVtx, sizeof(Double_t) * 2);
memcpy(target.fPtRange, fPtRange, sizeof(Double_t) *2);
memcpy(target.fIPCutParams, fIPCutParams, sizeof(Float_t) * 4);
memcpy(target.fSigmaToVtx, fSigmaToVtx, sizeof(Double_t) * 3);
+ memcpy(target.fEtaRange, fEtaRange, sizeof(Double_t) * 2);
+ memcpy(target.fPhiRange, fPhiRange, sizeof(Double_t) * 2);
// Copy cut List
if(target.fCutList){
TObjArray *genCuts = dynamic_cast<TObjArray *>(fCutList->FindObject("fPartGenCuts"));
if(genCuts){
AliCFParticleGenCuts *myGenCut = dynamic_cast<AliCFParticleGenCuts *>(genCuts->FindObject("fCutsGenMC"));
- if(myGenCut) myGenCut->SetAODMC(kTRUE);
+ if(myGenCut) {
+ myGenCut->SetAODMC(kTRUE);
+ }
}
}
SetHFElectronITSCuts();
SetHFElectronTOFCuts();
SetHFElectronTPCCuts();
- SetHFElectronTRDCuts();
+ SetHFElectronTRDCuts();
SetHFElectronDcaCuts();
+ // Publish to the cuts which analysis type they are (ESD Analysis by default)
+ if(IsAOD()){
+ //printf("Initialize AOD\n");
+ //AliInfo("Setting AOD Analysis");
+ TObjArray *genCuts = dynamic_cast<TObjArray *>(fCutList->FindObject("fPartGenCuts"));
+ if(genCuts){
+ AliCFParticleGenCuts *myGenCut = dynamic_cast<AliCFParticleGenCuts *>(genCuts->FindObject("fCutsGenMC"));
+ if(myGenCut) {
+ myGenCut->SetAODMC(kTRUE);
+ //printf("Set AOD MC\n");
+ }
+ }
+ }
+
// Connect the event cuts
SetEventCutList(kEventStepGenerated);
SetEventCutList(kEventStepReconstructed);
arr->AddLast(evGenCuts);
} else {
- 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);
- }
- }
+ AliHFEextraEventCuts *evRecCuts = new AliHFEextraEventCuts((Char_t *)"fCutsEvRec", (Char_t *)"Event Reconstructed cuts");
+ evRecCuts->SetRequireVtxCuts(kTRUE);
+ if(fUseSPDVertex) evRecCuts->SetUseSPDVertex();
+ if(fUseMixedVertex) evRecCuts->SetUseMixedVertex();
+ if(fUseCorrelationVertex) evRecCuts->SetCheckCorrelationSPDVtx();
+ if(fSPDVtxResolution) evRecCuts->SetCheckSPDResolution();
+ if(fPApileupCut) evRecCuts->SetpAPileupCut();
+ 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);
}
// Initialize Particle Cuts for Monte Carlo Tracks
// Production Vertex Radius: < 3cm
// Particle Species: Electrons
- // Eta: < 0.8
+ // Eta: < 0.8 (fEtaRange)
//
TObjArray *mcCuts = new TObjArray;
genCuts->SetRequireIsPrimary();
}
if(IsRequireProdVertex()){
- AliDebug(3, Form("Vertex Range: fProdVtx[0] %f, fProdVtx[1] %f, fProdVtx[2] %f, fProdVtx[3] %f", fProdVtx[0], fProdVtx[1], fProdVtx[2], fProdVtx[3]));
+ AliDebug(3, Form("Vertex Range: fProdVtx[0] %f, fProdVtx[1] %f, fProdVtx[2] %f, fProdVtx[3] %f, fProdVtxZ[0] %f, fProdVtx[1] %f", fProdVtx[0], fProdVtx[1], fProdVtx[2], fProdVtx[3], fProdVtxZ[0], fProdVtxZ[1]));
+ //if(!IsAOD()) {
genCuts->SetProdVtxRangeX(fProdVtx[0], fProdVtx[1]);
genCuts->SetProdVtxRangeY(fProdVtx[2], fProdVtx[3]);
+ genCuts->SetProdVtxRangeZ(fProdVtxZ[0], fProdVtxZ[1]);
genCuts->SetProdVtxRange2D(kTRUE); // Use ellipse
+ //}
+ //else {
+ // (ONLY PROVISOIRE FOR MC AOD)
+ // genCuts->SetProdVtxRangeX(-TMath::Abs(fProdVtx[1]), TMath::Abs(fProdVtx[1]));
+ // genCuts->SetProdVtxRangeY(-TMath::Abs(fProdVtx[3]), TMath::Abs(fProdVtx[3]));
+ //}
}
genCuts->SetRequirePdgCode(11, kTRUE);
if(IsQAOn()) genCuts->SetQAOn(fHistQA);
if(IsRequireKineMCCuts()) {
AliCFTrackKineCuts *kineMCcuts = new AliCFTrackKineCuts((Char_t *)"fCutsKineMC", (Char_t *)"MC Kine Cuts");
kineMCcuts->SetPtRange(fPtRange[0], fPtRange[1]);
- kineMCcuts->SetEtaRange(-0.8, 0.8);
+ //kineMCcuts->SetEtaRange(-0.8, 0.8);
+ kineMCcuts->SetEtaRange(fEtaRange[0],fEtaRange[1]);
+ if(fPhiRange[0] >= 0. && fPhiRange[1] >= 0.) kineMCcuts->SetPhiRange(fPhiRange[0], fPhiRange[1]);
if(IsQAOn()) kineMCcuts->SetQAOn(fHistQA);
mcCuts->AddLast(kineMCcuts);
}
// Momentum Range: 100MeV - 20GeV
// Eta: < 0.9 (TRD-TOF acceptance)
//
+ const Long_t kStatusSelectionDefault(AliESDtrack::kTPCrefit | AliESDtrack::kITSrefit);
AliDebug(2, "Called\n");
AliCFTrackQualityCuts *trackQuality = new AliCFTrackQualityCuts((Char_t *)"fCutsQualityRec", (Char_t *)"REC Track Quality Cuts");
- trackQuality->SetMinNClusterITS(fMinClustersITS);
+ //trackQuality->SetMinNClusterITS(fMinClustersITS);
trackQuality->SetMaxChi2PerClusterTPC(fMaxChi2clusterTPC);
if(fMaxChi2clusterITS >= 0.) trackQuality->SetMaxChi2PerClusterITS(fMaxChi2clusterITS);
- trackQuality->SetStatus(AliESDtrack::kTPCrefit | AliESDtrack::kITSrefit);
+ Long_t statusRequirement;
+ if(fAdditionalStatusRequirement)
+ statusRequirement = kStatusSelectionDefault | fAdditionalStatusRequirement;
+ else
+ statusRequirement = kStatusSelectionDefault;
+ trackQuality->SetStatus(statusRequirement);
//trackQuality->SetMaxCovDiagonalElements(2., 2., 0.5, 0.5, 2);
- AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTPC","Extra cuts from the HFE group");
+ AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTPCRec","Extra cuts from the HFE group");
hfecuts->SetDebugLevel(fDebugLevel);
-
+ hfecuts->SetMinNbITScls(fMinClustersITS);
// Set the cut in the TPC number of clusters
- hfecuts->SetMinNClustersTPC(fMinClustersTPC, fTPCclusterDef);
- hfecuts->SetClusterRatioTPC(fMinClusterRatioTPC, fTPCratioDef);
+ hfecuts->SetMinNClustersTPC(fMinClustersTPC,AliHFEextraCuts::ETPCclusterDef_t(fTPCclusterDef));
+ hfecuts->SetMinNClustersTPCPID(fMinClustersTPCPID);
+ hfecuts->SetClusterRatioTPC(fMinClusterRatioTPC,AliHFEextraCuts::ETPCclrDef_t(fTPCratioDef));
if(fFractionOfSharedTPCClusters > 0.0) hfecuts->SetFractionOfTPCSharedClusters(fFractionOfSharedTPCClusters);
+ if(fITSpatternCut) hfecuts->SetITSpatternCut();
+ if(fAODFilterBit > -1) hfecuts->SetAODFilterBit(fAODFilterBit);
AliCFTrackKineCuts *kineCuts = new AliCFTrackKineCuts((Char_t *)"fCutsKineRec", (Char_t *)"REC Kine Cuts");
+ //printf("Setting max. pt to %f\n", fPtRange[1]);
kineCuts->SetPtRange(fPtRange[0], fPtRange[1]);
- kineCuts->SetEtaRange(-0.8, 0.8);
+ //kineCuts->SetEtaRange(-0.8, 0.8);
+ kineCuts->SetEtaRange(fEtaRange[0],fEtaRange[1]);
+ if(fPhiRange[0] >= 0. && fPhiRange[1] >= 0.) kineCuts->SetPhiRange(fPhiRange[0], fPhiRange[1]);
if(IsQAOn()){
trackQuality->SetQAOn(fHistQA);
//
AliDebug(2, "Called\n");
AliCFTrackIsPrimaryCuts *primaryCut = new AliCFTrackIsPrimaryCuts((Char_t *)"fCutsPrimaryCuts", (Char_t *)"REC Primary Cuts");
- if(IsRequireDCAToVertex()){
+ //if(IsRequireDCAToVertex()){
//primaryCut->SetDCAToVertex2D(kTRUE);
- primaryCut->SetMaxDCAToVertexXY(fDCAtoVtx[0]);
- primaryCut->SetMaxDCAToVertexZ(fDCAtoVtx[1]);
- }
+ //primaryCut->SetMaxDCAToVertexXY(fDCAtoVtx[0]);
+ //primaryCut->SetMaxDCAToVertexZ(fDCAtoVtx[1]);
+ //}
if(IsRequireSigmaToVertex()){
primaryCut->SetRequireSigmaToVertex(kTRUE);
if(fSigmaToVtx[0]) primaryCut->SetMaxNSigmaToVertex(fSigmaToVtx[0]);
if(fSigmaToVtx[1]) primaryCut->SetMaxSigmaDCAxy(fSigmaToVtx[1]);
if(fSigmaToVtx[2]) primaryCut->SetMaxSigmaDCAz(fSigmaToVtx[2]);
}
- primaryCut->SetAcceptKinkDaughters(kFALSE);
+ //primaryCut->SetAcceptKinkDaughters(kFALSE);
if(IsQAOn()) primaryCut->SetQAOn(fHistQA);
AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsPrimaryCutsextra","Extra cuts from the HFE group");
hfecuts->SetMaxImpactParameterRpar(fMaxImpactParameterRpar);
+ if(fRejectKinkDaughters) hfecuts->SetRejectKinkDaughter();
+ if(fRejectKinkMothers) hfecuts->SetRejectKinkMother();
+ if(IsRequireDCAToVertex()){
+ hfecuts->SetMaxImpactParamR(fDCAtoVtx[0]);
+ hfecuts->SetMaxImpactParamZ(fDCAtoVtx[1]);
+ }
TObjArray *primCuts = new TObjArray;
primCuts->SetName("fPartPrimCuts");
- primCuts->AddLast(primaryCut);
- if(fMaxImpactParameterRpar){
- primCuts->AddLast(hfecuts);
- }
+ // needed for AOD...
+ if(IsRequireSigmaToVertex()) primCuts->AddLast(primaryCut);
+ //if(fMaxImpactParameterRpar){
+ primCuts->AddLast(hfecuts);
+ //}
fCutList->AddLast(primCuts);
}
hfecuts->SetRequireITSpixel(AliHFEextraCuts::ITSPixel_t(fCutITSPixel));
hfecuts->SetCheckITSstatus(fCheckITSLayerStatus);
}
+ if(IsRequireITSdrift()){
+ hfecuts->SetRequireITSdrift(AliHFEextraCuts::ITSDrift_t(fCutITSDrift));
+ }
if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
hfecuts->SetDebugLevel(fDebugLevel);
AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTOF","Extra cuts from the HFE group on TOF PID");
if(fTOFPIDStep) hfecuts->SetTOFPID(kTRUE);
if(fTOFMISMATCHStep) hfecuts->SetTOFMISMATCH(kTRUE);
+ if(fMatchTOFLabel) hfecuts->SetMatchTOFLabel(kTRUE);
+ if((fTOFsignaldx > 0.0) && (fTOFsignaldz > 0.0)) hfecuts->SetTOFsignalDxz(fTOFsignaldx,fTOFsignaldz);
if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
hfecuts->SetDebugLevel(fDebugLevel);
// Special Cuts introduced by the HFElectron Group: TPC
//
AliDebug(2, "Called\n");
- AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTPC","Extra cuts from the HFE group on TPC PID");
+ AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTPCPID","Extra cuts from the HFE group on TPC PID");
if(fTPCPIDCLEANUPStep) hfecuts->SetTPCPIDCleanUp(kTRUE);
if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
hfecuts->SetDebugLevel(fDebugLevel);
//
AliDebug(2, "Called\n");
AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTRD","Extra cuts from the HFE group on TRD PID");
- if(fMinTrackletsTRD > 0.) hfecuts->SetMinTrackletsTRD(fMinTrackletsTRD);
+ if(fMinTrackletsTRD > 0.) hfecuts->SetMinTrackletsTRD(fMinTrackletsTRD, fTRDtrackletsExact);
+ if(fMaxChi2TRD >= 0)
+ hfecuts->SetMaxChi2TRD(fMaxChi2TRD);
+
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(fIPCutParams,fIsIPSigmacut);
+ hfecuts->SetMinHFEImpactParamR(fIPCutParams,fIsIPSigmacut,fIsIPcharge,fIsIPOpp);
if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
hfecuts->SetDebugLevel(fDebugLevel);
}
return status;
}
+
+//__________________________________________________________________
+void AliHFEcuts::SetRecEvent(const AliVEvent *ev){
+ //
+ // Publish reconstructed event to the cuts
+ //
+ TIter cutsteps(fCutList);
+ TObjArray *cutstep;
+ AliCFCutBase *cut;
+ while((cutstep = dynamic_cast<TObjArray *>(cutsteps()))){
+ TIter cutIter(cutstep);
+ while((cut = dynamic_cast<AliCFCutBase *>(cutIter()))){
+ cut->SetRecEventInfo(ev);
+ }
+ }
+}
+
+//__________________________________________________________________
+void AliHFEcuts::SetMCEvent(const AliVEvent *ev){
+ //
+ // Publish reconstructed event to the cuts
+ //
+ TIter cutsteps(fCutList);
+ TObjArray *cutstep;
+ AliCFCutBase *cut;
+ while((cutstep = dynamic_cast<TObjArray *>(cutsteps()))){
+ TIter cutIter(cutstep);
+ while((cut = dynamic_cast<AliCFCutBase *>(cutIter()))){
+ cut->SetMCEventInfo(ev);
+ }
+ }
+}