Code from DongJo and Jan Rak
[u/mrichter/AliRoot.git] / PWGCF / Correlations / macros / jcorran / AddESDFilter.C
1 AliAnalysisFilter *AddESDFilter()
2 {
3   // Cuts on primary tracks
4   AliESDtrackCuts* esdTrackCutsL = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
5
6   // ITS stand-alone tracks
7   AliESDtrackCuts* esdTrackCutsITSsa = new AliESDtrackCuts("ITS stand-alone Track Cuts", "ESD Track Cuts");
8   esdTrackCutsITSsa->SetRequireITSStandAlone(kTRUE);
9
10   // Pixel OR necessary for the electrons
11   AliESDtrackCuts *itsStrong = new AliESDtrackCuts("ITSorSPD", "pixel requirement for ITS");
12   itsStrong->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
13
14
15   // PID for the electrons
16   AliESDpidCuts *electronID = new AliESDpidCuts("Electrons", "Electron PID cuts");
17   electronID->SetTPCnSigmaCut(AliPID::kElectron, 3.);
18
19   // standard cuts with very loose DCA
20   AliESDtrackCuts* esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE); 
21   esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
22   esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
23   esdTrackCutsH->SetDCAToVertex2D(kTRUE);
24
25   // standard cuts with tight DCA cut
26   AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
27
28   // standard cuts with tight DCA but with requiring the first SDD cluster instead of an SPD cluster
29   // tracks selected by this cut are exclusive to those selected by the previous cut
30   AliESDtrackCuts* esdTrackCutsH3 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(); 
31   esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
32   esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSDD, AliESDtrackCuts::kFirst);
33
34   // TPC only tracks: Optionally enable the writing of TPConly information
35   // constrained to SPD vertex in the filter below
36   AliESDtrackCuts* esdTrackCutsTPCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
37   esdTrackCutsTPCOnly->SetMinNClustersTPC(70);
38
39   // R_AA cut with recent change in AliESDtrackCuts in trunk aliroot (111026)
40   AliESDtrackCuts* esdTrackCutsRaa = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1); // 1,2,3,4,5,6,7
41   esdTrackCutsRaa->SetMinNCrossedRowsTPC(120); // 3 (70 set in above cut)
42   esdTrackCutsRaa->SetMaxChi2PerClusterITS(36.); // 8
43   esdTrackCutsRaa->SetMaxChi2TPCConstrainedGlobal(36.); // 9
44   esdTrackCutsRaa->SetMaxFractionSharedTPCClusters(0.4); // 10
45
46   // Compose the filter
47   AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
48   // 1
49   trackFilter->AddCuts(esdTrackCutsL);
50   // 2
51   trackFilter->AddCuts(esdTrackCutsITSsa);
52   // 4
53   trackFilter->AddCuts(itsStrong);
54   itsStrong->SetFilterMask(1);        // AND with Standard track cuts 
55   // 8
56   trackFilter->AddCuts(electronID);
57   electronID->SetFilterMask(4);       // AND with Pixel Cuts
58   // 16
59   trackFilter->AddCuts(esdTrackCutsH);
60   // 32
61   trackFilter->AddCuts(esdTrackCutsH2);
62   // 64
63   trackFilter->AddCuts(esdTrackCutsH3);
64   // 128 , 1 << 7
65   trackFilter->AddCuts(esdTrackCutsTPCOnly);
66
67   //========================================
68   //
69   //        Add Additional Cuts here
70   //
71   //========================================
72
73   trackFilter->AddCuts(esdTrackCutsRaa);
74
75   return trackFilter;
76 }
77