#include "AliCFAcceptanceCuts.h"
#include "AliCFCutBase.h"
#include "AliCFEventGenCuts.h"
-#include "AliCFEventRecCuts.h"
#include "AliCFManager.h"
#include "AliCFParticleGenCuts.h"
#include "AliCFTrackIsPrimaryCuts.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.),
fTOFPIDStep(kFALSE),
fTOFMISMATCHStep(kFALSE),
fTPCPIDCLEANUPStep(kFALSE),
+ fITSpatternCut(kFALSE),
fUseMixedVertex(kTRUE),
+ fUseSPDVertex(kFALSE),
+ fUseCorrelationVertex(kFALSE),
+ fSPDVtxResolution(kFALSE),
fIsIPSigmacut(kFALSE),
- fIsIPAbs(kTRUE),
+ fIsIPcharge(kFALSE),
+ fIsIPOpp(kFALSE),
fFractionOfSharedTPCClusters(-1.0),
fMaxImpactParameterRpar(kFALSE),
fAdditionalStatusRequirement(0),
+ fTOFsignaldx(-1.0),
+ fTOFsignaldz(-1.0),
+ fAODFilterBit(-1),
fHistQA(0x0),
fCutList(0x0),
fDebugLevel(0)
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;
}
//__________________________________________________________________
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.),
fTOFPIDStep(kFALSE),
fTOFMISMATCHStep(kFALSE),
fTPCPIDCLEANUPStep(kFALSE),
+ fITSpatternCut(kFALSE),
fUseMixedVertex(kTRUE),
+ fUseSPDVertex(kFALSE),
+ fUseCorrelationVertex(kFALSE),
+ fSPDVtxResolution(kFALSE),
fIsIPSigmacut(kFALSE),
- fIsIPAbs(kTRUE),
+ fIsIPcharge(kFALSE),
+ fIsIPOpp(kFALSE),
fFractionOfSharedTPCClusters(-1.0),
fMaxImpactParameterRpar(kFALSE),
fAdditionalStatusRequirement(0),
+ fTOFsignaldx(-1.0),
+ fTOFsignaldz(-1.0),
+ fAODFilterBit(-1),
fHistQA(0x0),
fCutList(0x0),
fDebugLevel(0)
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;
}
//__________________________________________________________________
fMinClustersTPCPID(0),
fMinClustersITS(0),
fMinTrackletsTRD(0),
+ fMaxChi2TRD(-1.),
fCutITSPixel(0),
fCheckITSLayerStatus(0),
+ fCutITSDrift(0),
fMaxChi2clusterITS(-1.),
fMaxChi2clusterTPC(0),
fMinClusterRatioTPC(0),
fTOFPIDStep(kFALSE),
fTOFMISMATCHStep(kFALSE),
fTPCPIDCLEANUPStep(kFALSE),
+ fITSpatternCut(c.fITSpatternCut),
fUseMixedVertex(kTRUE),
+ fUseSPDVertex(kFALSE),
+ fUseCorrelationVertex(c.fUseCorrelationVertex),
+ fSPDVtxResolution(c.fSPDVtxResolution),
fIsIPSigmacut(kFALSE),
- fIsIPAbs(kTRUE),
+ fIsIPcharge(kFALSE),
+ fIsIPOpp(kFALSE),
fFractionOfSharedTPCClusters(-1.0),
fMaxImpactParameterRpar(kFALSE),
fAdditionalStatusRequirement(0),
+ fTOFsignaldx(-1.0),
+ fTOFsignaldz(-1.0),
+ fAODFilterBit(-1),
fHistQA(0x0),
fCutList(0x0),
fDebugLevel(0)
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.fTOFMISMATCHStep = fTOFMISMATCHStep;
target.fTPCPIDCLEANUPStep = fTPCPIDCLEANUPStep;
target.fUseMixedVertex = fUseMixedVertex;
+ target.fUseSPDVertex = fUseSPDVertex;
+ target.fUseCorrelationVertex = fUseCorrelationVertex;
+ target.fSPDVtxResolution = fSPDVtxResolution;
target.fIsIPSigmacut = fIsIPSigmacut;
- target.fIsIPAbs = fIsIPAbs;
+ 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.fDebugLevel = 0;
memcpy(target.fProdVtx, fProdVtx, sizeof(Double_t) * 4);
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);
// 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();
+ 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;
}
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]));
+ //if(!IsAOD()) {
genCuts->SetProdVtxRangeX(fProdVtx[0], fProdVtx[1]);
genCuts->SetProdVtxRangeY(fProdVtx[2], fProdVtx[3]);
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(IsQAOn()) kineMCcuts->SetQAOn(fHistQA);
mcCuts->AddLast(kineMCcuts);
}
hfecuts->SetDebugLevel(fDebugLevel);
hfecuts->SetMinNbITScls(fMinClustersITS);
// Set the cut in the TPC number of clusters
- hfecuts->SetMinNClustersTPC(fMinClustersTPC, fTPCclusterDef);
+ hfecuts->SetMinNClustersTPC(fMinClustersTPC,AliHFEextraCuts::ETPCclusterDef_t(fTPCclusterDef));
hfecuts->SetMinNClustersTPCPID(fMinClustersTPCPID);
- hfecuts->SetClusterRatioTPC(fMinClusterRatioTPC, fTPCratioDef);
+ 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");
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(IsQAOn()){
trackQuality->SetQAOn(fHistQA);
AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsPrimaryCutsextra","Extra cuts from the HFE group");
hfecuts->SetMaxImpactParameterRpar(fMaxImpactParameterRpar);
hfecuts->SetRejectKinkDaughter();
- hfecuts->SetRejectKinkMother();
+ //hfecuts->SetRejectKinkMother();
if(IsRequireDCAToVertex()){
hfecuts->SetMaxImpactParamR(fDCAtoVtx[0]);
hfecuts->SetMaxImpactParamZ(fDCAtoVtx[1]);
TObjArray *primCuts = new TObjArray;
primCuts->SetName("fPartPrimCuts");
// needed for AOD...
- if(IsRequireSigmaToVertex()) {
- //printf("Add primary COORFW\n");
- primCuts->AddLast(primaryCut);
- }
- //printf("Did not add primary COORFW\n");
+ if(IsRequireSigmaToVertex()) primCuts->AddLast(primaryCut);
//if(fMaxImpactParameterRpar){
primCuts->AddLast(hfecuts);
//}
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((fTOFsignaldx > 0.0) && (fTOFsignaldz > 0.0)) hfecuts->SetTOFsignalDxz(fTOFsignaldx,fTOFsignaldz);
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, 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,fIsIPAbs);
+ hfecuts->SetMinHFEImpactParamR(fIPCutParams,fIsIPSigmacut,fIsIPcharge,fIsIPOpp);
if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
hfecuts->SetDebugLevel(fDebugLevel);
}
//__________________________________________________________________
-void AliHFEcuts::SetMCEvent(const AliMCEvent *ev){
+void AliHFEcuts::SetMCEvent(const AliVEvent *ev){
//
// Publish reconstructed event to the cuts
//