]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/macros/AddTaskESDFilterPWG4Train.C
flag jets with too high p_T track
[u/mrichter/AliRoot.git] / PWG4 / macros / AddTaskESDFilterPWG4Train.C
index bf75690cbba70e70c61ccfdb1ed4627f92e32e93..ceb8e3170b27a7c9551ae0eee6fc4b86cc11c79a 100644 (file)
@@ -1,8 +1,10 @@
 
+
 AliAnalysisTaskESDfilter *AddTaskESDFilter(Bool_t useKineFilter=kTRUE, 
                                            Bool_t writeMuonAOD=kFALSE,
                                            Bool_t writeDimuonAOD=kFALSE,
-                                          Bool_t usePhysicsSelection=kFALSE)
+                                          Bool_t usePhysicsSelection=kFALSE,
+                                          Bool_t useCentralityTask=kFALSE)
 {
 // Creates a filter task and adds it to the analysis manager.
 
@@ -39,6 +41,27 @@ AliAnalysisTaskESDfilter *AddTaskESDFilter(Bool_t useKineFilter=kTRUE,
    //===========================================================================   
    // Barrel tracks filter
    AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");
+
+   // Make the AOD a little bit lighter and filtering faster
+   
+   esdfilter->DisableCascades();
+   //   esdfilter->DisableV0s();
+   esdfilter->DisableKinks();
+   //   esdfilter->DisableTracks();
+   esdfilter->DisablePmdClusters();
+   //   esdfilter->DisableCaloClusters();
+   //   esdfilter->DisableCells(); 
+   esdfilter->DisableTracklets();
+   esdfilter->SetWriteHybridGlobalConstrainedOnly(kTRUE);
+
+   AliAnalysisTaskAODCentralityMaker* ctask = 0;
+   if (useCentralityTask) {
+       ctask = new AliAnalysisTaskAODCentralityMaker("AODCentralityMaker");
+       ctask->SetDeltaAODFileName("AliAODCentrality.root");
+       mgr->AddTask(ctask);
+   }
+
+
    mgr->AddTask(esdfilter);
    // Muons
    //   AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
@@ -80,39 +103,42 @@ AliAnalysisTaskESDfilter *AddTaskESDFilter(Bool_t useKineFilter=kTRUE,
    // take the standard cuts, which include already 
    // ITSrefit and use only primaries...
 
-   // loose DCA cuts
-   AliESDtrackCuts* esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE); 
-   esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
-   esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
-   esdTrackCutsH->SetDCAToVertex2D(kTRUE);
+   // ITS cuts for new jet analysis 
+   gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/CreateTrackCutsPWG4.C");
+   AliESDtrackCuts* esdTrackCutsHG0 = CreateTrackCutsPWG4(10001005);
 
-   // standard cuts with tight DCA cut
-   AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
+   // throw out tracks with too low number of clusters in
+   // the first pass (be consistent with TPC only tracks)
+   // N.B. the number off crossed rows still acts on the tracks after
+   // all iterations if we require tpc standalone, number of clusters
+   // and chi2 TPC cuts act on track after the first iteration
+   //   esdTrackCutsH0->SetRequireTPCStandAlone(kTRUE);
+   //   esdTrackCutsH0->SetMinNClustersTPC(80); // <--- first pass
 
-   // standard cuts with tight DCA but with requiring the first SDD cluster instead of an SPD cluster
-   // tracks selected by this cut are exclusive to those selected by the previous cut
-   AliESDtrackCuts* esdTrackCutsH3 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(); 
-   esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
-   esdTrackCutsH3->SetClusterRequirementITS(AliESDtrackCuts::kSDD, AliESDtrackCuts::kFirst);
+
+   // the complement to the one with SPD requirement
+   AliESDtrackCuts* esdTrackCutsHG1 = CreateTrackCutsPWG4(10011005);
+
+   // the tracks that must not be taken pass this cut and
+   // non HGC1 and HG
+   AliESDtrackCuts* esdTrackCutsHG2 = CreateTrackCutsPWG4(10021005);
+
+   
+
+
+   // standard cuts also used in R_AA analysis
+   gROOT->LoadMacro("$ALICE_ROOT/PWG0/dNdPt/macros/CreatedNdPtTrackCuts.C");
+   AliESDtrackCuts* esdTrackCutsH2 = CreatedNdPtTrackCuts(200);
+   esdTrackCutsH2->SetMaxChi2PerClusterITS(36.);
+   esdTrackCutsH2->SetPtRange(0.15,1E10);
+
+   AliESDtrackCuts* esdTrackCutsGCOnly = CreateTrackCutsPWG4(10041005);
+
+   // TPC only tracks
+   AliESDtrackCuts* esdTrackCutsTPCCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
+   esdTrackCutsTPCCOnly->SetMinNClustersTPC(70);
 
 
-   // these are needed for older MC 
-   /*
-   AliESDtrackCuts* esdTrackCutsH1 = new AliESDtrackCuts("OldStandardTrackCuts+ITSRefit", "High pT ESD Track Cuts");
-   esdTrackCutsH1->SetMinNClustersTPC(50);
-   esdTrackCutsH1->SetMaxChi2PerClusterTPC(3.5);
-   esdTrackCutsH1->SetRequireTPCRefit(kTRUE);
-   esdTrackCutsH1->SetMaxDCAToVertexXY(2.4);
-   esdTrackCutsH1->SetMaxDCAToVertexZ(3.2);
-   esdTrackCutsH1->SetDCAToVertex2D(kTRUE);
-   esdTrackCutsH1->SetRequireSigmaToVertex(kFALSE);
-   esdTrackCutsH1->SetAcceptKinkDaughters(kFALSE);
-   esdTrackCutsH1->SetRequireITSRefit(kTRUE); // additional cut 
-   */
-   AliESDtrackCuts* esdTrackCutsH1 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
-   esdTrackCutsH1->SetName("StandardFromAliESDTrackCutsMaxRelPt");
-   esdTrackCutsH1->SetMaxRel1PtUncertainty(0.4); // new 
 
    // Compose the filter
    AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
@@ -127,14 +153,28 @@ AliAnalysisTaskESDfilter *AddTaskESDFilter(Bool_t useKineFilter=kTRUE,
    trackFilter->AddCuts(electronID);
    electronID->SetFilterMask(4);       // AND with Pixel Cuts
    // 16 1<<4
-   trackFilter->AddCuts(esdTrackCutsH);
+   trackFilter->AddCuts(esdTrackCutsHG0);
    // 32 1<<5
-   trackFilter->AddCuts(esdTrackCutsH2);
+   trackFilter->AddCuts(esdTrackCutsHG1);
    // 64 1<<6
-   trackFilter->AddCuts(esdTrackCutsH3);
+   trackFilter->AddCuts(esdTrackCutsHG2);
    // 128 1<<7
-   trackFilter->AddCuts(esdTrackCutsH1);
+   trackFilter->AddCuts(esdTrackCutsHG0); // add once more for tpc only tracks
+   // 256 1<<8
+   trackFilter->AddCuts(esdTrackCutsGCOnly);
+   // 512 1<<9                         
+   trackFilter->AddCuts(esdTrackCutsHG1); // add once more for tpc only tracks
+   // 1024 1<<10                        
+   trackFilter->AddCuts(esdTrackCutsH2); // add r_aa cuts
+   // 2048 1<<11                        
+   trackFilter->AddCuts(esdTrackCutsTPCCOnly); // add QM TPC only track cuts
+   
+
+   esdfilter->SetGlobalConstrainedFilterMask(1<<8|1<<9); // these tracks are written out as global constrained tracks
+   esdfilter->SetHybridFilterMaskGlobalConstrainedGlobal((1<<4)); // these normal global tracks will be marked as hybrid
+
+   esdfilter->SetTPCConstrainedFilterMask(1<<11); // these tracks are written out as global constrained tracks
+
    // Filter with cuts on V0s
    AliESDv0Cuts*   esdV0Cuts = new AliESDv0Cuts("Standard V0 Cuts pp", "ESD V0 Cuts");
    esdV0Cuts->SetMinRadius(0.2);
@@ -144,10 +184,10 @@ AliAnalysisTaskESDfilter *AddTaskESDFilter(Bool_t useKineFilter=kTRUE,
    esdV0Cuts->SetMaxDcaV0Daughters(1.5);
    esdV0Cuts->SetMinCosinePointingAngle(0.99);
    AliAnalysisFilter* v0Filter = new AliAnalysisFilter("v0Filter");
-   //  v0Filter->AddCuts(esdV0Cuts);
+   v0Filter->AddCuts(esdV0Cuts);
 
    esdfilter->SetTrackFilter(trackFilter);
-   //  esdfilter->SetV0Filter(v0Filter);
+   esdfilter->SetV0Filter(v0Filter);
 
    // Enable writing of Muon AODs
    //   esdmuonfilter->SetWriteMuonAOD(writeMuonAOD);
@@ -171,6 +211,11 @@ AliAnalysisTaskESDfilter *AddTaskESDFilter(Bool_t useKineFilter=kTRUE,
                                                                   AliAnalysisManager::kOutputContainer,"pyxsec_hists.root");
       mgr->ConnectOutput (kinefilter,  1,coutputEx);
    }   
+  if (useCentralityTask) {
+       mgr->ConnectInput (ctask, 0, mgr->GetCommonInputContainer());
+       mgr->ConnectOutput(ctask, 0, mgr->GetCommonOutputContainer());
+   }
+
    return esdfilter;
  }