ROOT logo
//Bool_t AddTrackCutsLHC10h(AliAnalysisTaskESDfilter* esdFilter);
void CreateAOD()
{
  // Main
  
  // LoadLibraries
  gSystem->Load("libTree.so");
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libXMLIO.so");
  gSystem->Load("libMatrix.so");
  gSystem->Load("libPhysics.so");
  gSystem->Load("libSTEERBase.so");
  gSystem->Load("libESD.so");
  gSystem->Load("libAOD.so");
  gSystem->Load("libANALYSIS.so");
  gSystem->Load("libANALYSISalice.so");
  gSystem->Load("libCORRFW.so");


  //Data
  TChain *chain       = new TChain("esdTree") ;
  chain->Add("AliESDs.root");
  
  if(chain){
    AliLog::SetGlobalLogLevel(AliLog::kError);//Minimum prints on screen
    
    //--------------------------------------
    // Make the analysis manager
    //-------------------------------------
    AliAnalysisManager *mgr  = new AliAnalysisManager("Manager", "Manager");
    
    AliMCEventHandler* mcHandler = new AliMCEventHandler();
    mcHandler->SetReadTR(kFALSE);//Do not search TrackRef file
    mgr->SetMCtruthEventHandler(mcHandler);
    
    AliAODHandler* aodoutHandler   = new AliAODHandler();
    aodoutHandler->SetOutputFileName("AliAOD.root");
    ////aodoutHandler->SetCreateNonStandardAOD();
    mgr->SetOutputEventHandler(aodoutHandler);
    
    AliESDInputHandler *esdHandler = new AliESDInputHandler();
    esdHandler->SetReadFriends(kFALSE);
    mgr->SetInputEventHandler(esdHandler);
    
    //mgr->SetDebugLevel(-1); // For debugging, do not uncomment if you want no messages.
    
    //-------------------------------------------------------------------------
    //Define task, put here any other task that you want to use.
    //-------------------------------------------------------------------------
    AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
    AliAnalysisDataContainer *coutput1;
    
    coutput1 = mgr->GetCommonOutputContainer();


   // Create the task, add it to the manager and configure it.
   //===========================================================================   
   // Barrel tracks filter
   AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");
//   esdfilter->SetTimeZeroType(AliESDpid::kTOF_T0);
//   esdfilter->DisableCascades();
//   esdfilter->DisableKinks();
  
   mgr->AddTask(esdfilter);
  
   
   // Filtering of MC particles (decays conversions etc)
   // this task has to go AFTER all other filter tasks
   // since it fills the AODMC array with all
   // selected MC Particles, only this way we have the 
   // AODMCparticle information available for following tasks
   AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Kine Filter");
   mgr->AddTask(kinefilter);

   
  Printf("%s%d: Creating Track Cuts for LH10h",(char*)__FILE__,__LINE__);

  // Cuts on primary tracks
  AliESDtrackCuts* esdTrackCutsL = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
  
  // ITS stand-alone tracks
  AliESDtrackCuts* esdTrackCutsITSsa = new AliESDtrackCuts("ITS stand-alone Track Cuts", "ESD Track Cuts");
  esdTrackCutsITSsa->SetRequireITSStandAlone(kTRUE);
  
  // Pixel OR necessary for the electrons
  AliESDtrackCuts *itsStrong = new AliESDtrackCuts("ITSorSPD", "pixel requirement for ITS");
  itsStrong->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
  
  
  // PID for the electrons
  AliESDpidCuts *electronID = new AliESDpidCuts("Electrons", "Electron PID cuts");
  electronID->SetTPCnSigmaCut(AliPID::kElectron, 3.);
  
  // tighter cuts on primary particles for high pT tracks
  // take the standard cuts, which include already 
  // ITSrefit and use only primaries...
  
  // ITS cuts for new jet analysis 
  //  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
  //  AliESDtrackCuts* esdTrackCutsHG0 = CreateTrackCutsPWGJE(10001006);

  AliESDtrackCuts *jetCuts1006 = new AliESDtrackCuts("AliESDtrackCuts"); 

  TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
  jetCuts1006->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep,20.);
  jetCuts1006->SetMinNClustersTPC(70);
  jetCuts1006->SetMaxChi2PerClusterTPC(4);
  jetCuts1006->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
  jetCuts1006->SetAcceptKinkDaughters(kFALSE);
  jetCuts1006->SetRequireTPCRefit(kTRUE);
  jetCuts1006->SetMaxFractionSharedTPCClusters(0.4);
  // ITS
  jetCuts1006->SetRequireITSRefit(kTRUE);
  //accept secondaries
  jetCuts1006->SetMaxDCAToVertexXY(2.4);
  jetCuts1006->SetMaxDCAToVertexZ(3.2);
  jetCuts1006->SetDCAToVertex2D(kTRUE);
  //reject fakes
  jetCuts1006->SetMaxChi2PerClusterITS(36);
  jetCuts1006->SetMaxChi2TPCConstrainedGlobal(36);

  jetCuts1006->SetRequireSigmaToVertex(kFALSE);

  jetCuts1006->SetEtaRange(-0.9,0.9);
  jetCuts1006->SetPtRange(0.15, 1E+15.);

  AliESDtrackCuts* esdTrackCutsHG0 = jetCuts1006->Clone("JetCuts10001006");
  esdTrackCutsHG0->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);


  // 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
  
  
  // the complement to the one with SPD requirement
  //  AliESDtrackCuts* esdTrackCutsHG1 = CreateTrackCutsPWGJE(10011006);
  AliESDtrackCuts* esdTrackCutsHG1 = jetCuts1006->Clone("JetCuts10011006");
  esdTrackCutsHG1->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);

  // the tracks that must not be taken pass this cut and
  // non HGC1 and HG
  //  AliESDtrackCuts* esdTrackCutsHG2 = CreateTrackCutsPWGJE(10021006);
  AliESDtrackCuts* esdTrackCutsHG2 = jetCuts1006->Clone("JetCuts10021006");
  esdTrackCutsHG2->SetMaxChi2PerClusterITS(1E10);


  // standard cuts also used in R_AA analysis
  //   "Global track RAA analysis QM2011 + Chi2ITS<36";
  //  AliESDtrackCuts* esdTrackCutsH2 = CreateTrackCutsPWGJE(1000);
  AliESDtrackCuts* esdTrackCutsH2 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
  esdTrackCutsH2->SetMinNCrossedRowsTPC(120);
  esdTrackCutsH2->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
  esdTrackCutsH2->SetMaxChi2PerClusterITS(36);
  esdTrackCutsH2->SetMaxFractionSharedTPCClusters(0.4);
  esdTrackCutsH2->SetMaxChi2TPCConstrainedGlobal(36);

  esdTrackCutsH2->SetEtaRange(-0.9,0.9);
  esdTrackCutsH2->SetPtRange(0.15, 1e10);


  //  AliESDtrackCuts* esdTrackCutsGCOnly = CreateTrackCutsPWGJE(10041006);
  AliESDtrackCuts* esdTrackCutsGCOnly = jetCuts1006->Clone("JetCuts10041006");
  esdTrackCutsGCOnly->SetRequireITSRefit(kFALSE);



  // TPC only tracks
  AliESDtrackCuts* esdTrackCutsTPCCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
  esdTrackCutsTPCCOnly->SetMinNClustersTPC(70);
  
  // Compose the filter
  AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
  // 1, 1<<0
  trackFilter->AddCuts(esdTrackCutsL);
  // 2 1<<1
  trackFilter->AddCuts(esdTrackCutsITSsa);
  // 4 1<<2
  trackFilter->AddCuts(itsStrong);
  itsStrong->SetFilterMask(1);        // AND with Standard track cuts 
  // 8 1<<3
  trackFilter->AddCuts(electronID);
  electronID->SetFilterMask(4);       // AND with Pixel Cuts
  // 16 1<<4
  trackFilter->AddCuts(esdTrackCutsHG0);
  // 32 1<<5
  trackFilter->AddCuts(esdTrackCutsHG1);
  // 64 1<<6
  trackFilter->AddCuts(esdTrackCutsHG2);
  // 128 1<<7
  trackFilter->AddCuts(esdTrackCutsTPCCOnly); // add QM TPC only track cuts
  esdfilter->SetTPCOnlyFilterMask(128);
  // 256 1<<8
  trackFilter->AddCuts(esdTrackCutsGCOnly);
  // 512 1<<9                         
  AliESDtrackCuts* esdTrackCutsHG1_tmp = new AliESDtrackCuts(*esdTrackCutsHG1); // avoid double delete
  trackFilter->AddCuts(esdTrackCutsHG1_tmp); // add once more for tpc only tracks
  // 1024 1<<10                        
  trackFilter->AddCuts(esdTrackCutsH2); // add r_aa 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->SetWriteHybridGlobalConstrainedOnly(kTRUE); // write only the complement
  //     esdfilter->SetTPCConstrainedFilterMask(1<<11); // these tracks are written out as tpc constrained tracks

  esdfilter->SetTrackFilter(trackFilter);
      
   

   // Filter with cuts on V0s
   AliESDv0Cuts*   esdV0Cuts = new AliESDv0Cuts("Standard V0 Cuts pp", "ESD V0 Cuts");
   esdV0Cuts->SetMinRadius(0.2);
   esdV0Cuts->SetMaxRadius(200);
   esdV0Cuts->SetMinDcaPosToVertex(0.05);
   esdV0Cuts->SetMinDcaNegToVertex(0.05);
   esdV0Cuts->SetMaxDcaV0Daughters(1.5);
   esdV0Cuts->SetMinCosinePointingAngle(0.99);
   AliAnalysisFilter* v0Filter = new AliAnalysisFilter("v0Filter");
   v0Filter->AddCuts(esdV0Cuts);

   esdfilter->SetV0Filter(v0Filter);

 
   // Create ONLY the output containers for the data produced by the task.
   // Get and connect other common input/output containers via the manager as below
   //==============================================================================
   mgr->ConnectInput  (esdfilter,  0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput (esdfilter,  0, mgr->GetCommonOutputContainer());
   mgr->ConnectInput  (kinefilter,  0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput (kinefilter,  0, mgr->GetCommonOutputContainer());
   AliAnalysisDataContainer *coutputEx = mgr->CreateContainer("cFilterList", TList::Class(),
								   AliAnalysisManager::kOutputContainer,"pyxsec_hists.root");
   mgr->ConnectOutput (kinefilter,  1,coutputEx);

    
    //-----------------------
    // Run the analysis
    //-----------------------    
    mgr->InitAnalysis();
    mgr->PrintStatus();
    mgr->StartAnalysis("local",chain);
    
    cout <<" Analysis ended sucessfully "<< endl ;
    
  }
  else cout << "Chain was not produced ! "<<endl;
  
}
 CreateAOD.C:1
 CreateAOD.C:2
 CreateAOD.C:3
 CreateAOD.C:4
 CreateAOD.C:5
 CreateAOD.C:6
 CreateAOD.C:7
 CreateAOD.C:8
 CreateAOD.C:9
 CreateAOD.C:10
 CreateAOD.C:11
 CreateAOD.C:12
 CreateAOD.C:13
 CreateAOD.C:14
 CreateAOD.C:15
 CreateAOD.C:16
 CreateAOD.C:17
 CreateAOD.C:18
 CreateAOD.C:19
 CreateAOD.C:20
 CreateAOD.C:21
 CreateAOD.C:22
 CreateAOD.C:23
 CreateAOD.C:24
 CreateAOD.C:25
 CreateAOD.C:26
 CreateAOD.C:27
 CreateAOD.C:28
 CreateAOD.C:29
 CreateAOD.C:30
 CreateAOD.C:31
 CreateAOD.C:32
 CreateAOD.C:33
 CreateAOD.C:34
 CreateAOD.C:35
 CreateAOD.C:36
 CreateAOD.C:37
 CreateAOD.C:38
 CreateAOD.C:39
 CreateAOD.C:40
 CreateAOD.C:41
 CreateAOD.C:42
 CreateAOD.C:43
 CreateAOD.C:44
 CreateAOD.C:45
 CreateAOD.C:46
 CreateAOD.C:47
 CreateAOD.C:48
 CreateAOD.C:49
 CreateAOD.C:50
 CreateAOD.C:51
 CreateAOD.C:52
 CreateAOD.C:53
 CreateAOD.C:54
 CreateAOD.C:55
 CreateAOD.C:56
 CreateAOD.C:57
 CreateAOD.C:58
 CreateAOD.C:59
 CreateAOD.C:60
 CreateAOD.C:61
 CreateAOD.C:62
 CreateAOD.C:63
 CreateAOD.C:64
 CreateAOD.C:65
 CreateAOD.C:66
 CreateAOD.C:67
 CreateAOD.C:68
 CreateAOD.C:69
 CreateAOD.C:70
 CreateAOD.C:71
 CreateAOD.C:72
 CreateAOD.C:73
 CreateAOD.C:74
 CreateAOD.C:75
 CreateAOD.C:76
 CreateAOD.C:77
 CreateAOD.C:78
 CreateAOD.C:79
 CreateAOD.C:80
 CreateAOD.C:81
 CreateAOD.C:82
 CreateAOD.C:83
 CreateAOD.C:84
 CreateAOD.C:85
 CreateAOD.C:86
 CreateAOD.C:87
 CreateAOD.C:88
 CreateAOD.C:89
 CreateAOD.C:90
 CreateAOD.C:91
 CreateAOD.C:92
 CreateAOD.C:93
 CreateAOD.C:94
 CreateAOD.C:95
 CreateAOD.C:96
 CreateAOD.C:97
 CreateAOD.C:98
 CreateAOD.C:99
 CreateAOD.C:100
 CreateAOD.C:101
 CreateAOD.C:102
 CreateAOD.C:103
 CreateAOD.C:104
 CreateAOD.C:105
 CreateAOD.C:106
 CreateAOD.C:107
 CreateAOD.C:108
 CreateAOD.C:109
 CreateAOD.C:110
 CreateAOD.C:111
 CreateAOD.C:112
 CreateAOD.C:113
 CreateAOD.C:114
 CreateAOD.C:115
 CreateAOD.C:116
 CreateAOD.C:117
 CreateAOD.C:118
 CreateAOD.C:119
 CreateAOD.C:120
 CreateAOD.C:121
 CreateAOD.C:122
 CreateAOD.C:123
 CreateAOD.C:124
 CreateAOD.C:125
 CreateAOD.C:126
 CreateAOD.C:127
 CreateAOD.C:128
 CreateAOD.C:129
 CreateAOD.C:130
 CreateAOD.C:131
 CreateAOD.C:132
 CreateAOD.C:133
 CreateAOD.C:134
 CreateAOD.C:135
 CreateAOD.C:136
 CreateAOD.C:137
 CreateAOD.C:138
 CreateAOD.C:139
 CreateAOD.C:140
 CreateAOD.C:141
 CreateAOD.C:142
 CreateAOD.C:143
 CreateAOD.C:144
 CreateAOD.C:145
 CreateAOD.C:146
 CreateAOD.C:147
 CreateAOD.C:148
 CreateAOD.C:149
 CreateAOD.C:150
 CreateAOD.C:151
 CreateAOD.C:152
 CreateAOD.C:153
 CreateAOD.C:154
 CreateAOD.C:155
 CreateAOD.C:156
 CreateAOD.C:157
 CreateAOD.C:158
 CreateAOD.C:159
 CreateAOD.C:160
 CreateAOD.C:161
 CreateAOD.C:162
 CreateAOD.C:163
 CreateAOD.C:164
 CreateAOD.C:165
 CreateAOD.C:166
 CreateAOD.C:167
 CreateAOD.C:168
 CreateAOD.C:169
 CreateAOD.C:170
 CreateAOD.C:171
 CreateAOD.C:172
 CreateAOD.C:173
 CreateAOD.C:174
 CreateAOD.C:175
 CreateAOD.C:176
 CreateAOD.C:177
 CreateAOD.C:178
 CreateAOD.C:179
 CreateAOD.C:180
 CreateAOD.C:181
 CreateAOD.C:182
 CreateAOD.C:183
 CreateAOD.C:184
 CreateAOD.C:185
 CreateAOD.C:186
 CreateAOD.C:187
 CreateAOD.C:188
 CreateAOD.C:189
 CreateAOD.C:190
 CreateAOD.C:191
 CreateAOD.C:192
 CreateAOD.C:193
 CreateAOD.C:194
 CreateAOD.C:195
 CreateAOD.C:196
 CreateAOD.C:197
 CreateAOD.C:198
 CreateAOD.C:199
 CreateAOD.C:200
 CreateAOD.C:201
 CreateAOD.C:202
 CreateAOD.C:203
 CreateAOD.C:204
 CreateAOD.C:205
 CreateAOD.C:206
 CreateAOD.C:207
 CreateAOD.C:208
 CreateAOD.C:209
 CreateAOD.C:210
 CreateAOD.C:211
 CreateAOD.C:212
 CreateAOD.C:213
 CreateAOD.C:214
 CreateAOD.C:215
 CreateAOD.C:216
 CreateAOD.C:217
 CreateAOD.C:218
 CreateAOD.C:219
 CreateAOD.C:220
 CreateAOD.C:221
 CreateAOD.C:222
 CreateAOD.C:223
 CreateAOD.C:224
 CreateAOD.C:225
 CreateAOD.C:226
 CreateAOD.C:227
 CreateAOD.C:228
 CreateAOD.C:229
 CreateAOD.C:230
 CreateAOD.C:231
 CreateAOD.C:232
 CreateAOD.C:233
 CreateAOD.C:234
 CreateAOD.C:235
 CreateAOD.C:236
 CreateAOD.C:237
 CreateAOD.C:238
 CreateAOD.C:239
 CreateAOD.C:240
 CreateAOD.C:241
 CreateAOD.C:242
 CreateAOD.C:243
 CreateAOD.C:244
 CreateAOD.C:245
 CreateAOD.C:246
 CreateAOD.C:247
 CreateAOD.C:248
 CreateAOD.C:249
 CreateAOD.C:250
 CreateAOD.C:251
 CreateAOD.C:252
 CreateAOD.C:253
 CreateAOD.C:254
 CreateAOD.C:255
 CreateAOD.C:256