ROOT logo
void AddTask_dNdPtpPb(UInt_t uTriggerMask = AliVEvent::kINT7, Int_t iCutMode = 2014, char *contName = "dNdPtpPb", Float_t fEta = -10. )
{
/*
CheckLoadLibrary("libPWG0base");
CheckLoadLibrary("libPWG0dep");
CheckLoadLibrary("libPWG0selectors");
*/

  //Get current Analysis Manager
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();

  if (!mgr) {
    Error("AddTask_dNdPtAnalysis_TPCITS", "No analysis manager found.");
    return 0;
  }

  // Switch off all AliInfo (too much output!!!)
//  AliLog::SetGlobalLogLevel(AliLog::kError);
//  mgr->SetDebugLevel(0);

  //
  // Create event cuts
  //
  Float_t zvWindow = 30. ;

  AlidNdPtEventCuts *evtCuts = new AlidNdPtEventCuts("AlidNdPtEventCuts","Event cuts");
  evtCuts->SetZvRange(-zvWindow,zvWindow);
  evtCuts->SetMeanXYZv(0.0,0.0,0.0);
  evtCuts->SetSigmaMeanXYZv(1.0,1.0,10.0);
  evtCuts->SetTriggerRequired(kTRUE);
  //evtCuts->SetTriggerRequired(kFALSE);

  //
  // Create geom. acceptance cuts
  //
  //Float_t etaWindow = 1.0;
  Float_t eta1 = -0.765409; 
  Float_t eta2 = -0.165409; 
  
  if(fEta > -10)
  {
	eta1 = -1.0*fEta;
	eta2 = fEta;
  }
  
  Float_t ptMin = 0.1 ;

  AlidNdPtAcceptanceCuts *accCuts = new AlidNdPtAcceptanceCuts("AlidNdPtAcceptanceCuts","Geom. acceptance cuts");
  accCuts->SetEtaRange(eta1,eta2);
  accCuts->SetPtRange(ptMin,1.e10);

  //
  // Create standard esd track cuts
  //
  Int_t cutMode = iCutMode;

  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/ChargedHadrons/dNdPt/macros/CreatedNdPtTrackCuts.C");
  //gROOT->LoadMacro("./CreatedNdPtTrackCuts.C");
  AliESDtrackCuts* esdTrackCuts = CreatedNdPtTrackCuts(cutMode);
  if (!esdTrackCuts) {
    printf("ERROR: esdTrackCuts could not be created\n")
    return;
  } else {
    //esdTrackCuts->SetHistogramsOn(kTRUE);
    esdTrackCuts->SetHistogramsOn(kTRUE);
  }

  Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);

  //
  // Create task
  //
  AlidNdPtTask *task = new AlidNdPtTask("AlidNdPtTask_TPCITS");
  task->SetUseMCInfo(hasMC);

  // trigger  
  task->SelectCollisionCandidates(uTriggerMask); 

  //
  // set analysis options from the Helper here !!!
  //

  //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kMB1;
  AlidNdPtHelper::AnalysisMode analysisMode = AlidNdPtHelper::kTPCITS;
  AlidNdPtHelper::ParticleMode particleMode = AlidNdPtHelper::kAllPart ;

  //
  // Create analysis object
  //

  AlidNdPtAnalysispPb *fdNdPtAnalysis = new AlidNdPtAnalysispPb("dNdPtAnalysis_TPCITS","dN/dPt Analysis with TPC-ITS tracking");//Now AnalysispPb before: Analzsiis
  fdNdPtAnalysis->SetEventCuts(evtCuts);
  fdNdPtAnalysis->SetAcceptanceCuts(accCuts);
  fdNdPtAnalysis->SetTrackCuts(esdTrackCuts);
  //fdNdPtAnalysis->SetBackgroundCuts(backCuts);
  fdNdPtAnalysis->SetAnalysisMode(analysisMode); 
  fdNdPtAnalysis->SetParticleMode(particleMode); 
  
  //j kCINT5 should work for 2012 data, kINT7 for 2013
  
  //fdNdPtAnalysis->SetTrigger(trigger);
 // fdNdPtAnalysis->SetTriggerMask(AliVEvent::kCINT5);
  fdNdPtAnalysis->SetTriggerMask(uTriggerMask);
  //fdNdPtAnalysis->SetTriggerMask(AliVEvent::kEMC1);  
  if(hasMC) 
  {
    //physTrigSel->SetAnalyzeMC();
    //fdNdPtAnalysis->SetPhysicsTriggerSelection(physTrigSel); 

    fdNdPtAnalysis->SetUseMCInfo(kTRUE);
    fdNdPtAnalysis->SetHistogramsOn(kTRUE);
    //fdNdPtAnalysis->SetHistogramsOn(kFALSE);
  }
  else { // online trigger
//     physTrigSel->SetUseBXNumbers();
//     physTrigSel->SetComputeBG();
//     fdNdPtAnalysis->SetPhysicsTriggerSelection(physTrigSel); 
  }
  
    // change binning
    Int_t multNbins = 152;  
    Double_t binsMult[153];
    for (int i=0; i<=multNbins; i++) { binsMult[i] = -0.5 + i; }
    binsMult[152] = 1000.;
    // change binning
    const Int_t ptNbins = 81;
    Double_t bins[82] = {0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0, 32.0, 34.0, 36.0, 40.0, 45.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0, 120.0, 130.0, 140.0, 150.0, 160.0, 180.0, 200.0};
    Double_t* binsPt = new Double_t[82];
    for (int i=0; i<82; i++) {binsPt[i] = bins[i];}
    fdNdPtAnalysis->SetBinsPt(ptNbins, binsPt);
    fdNdPtAnalysis->SetBinsPtCorr(ptNbins, binsPt);  
    fdNdPtAnalysis->SetBinsMult(multNbins, binsMult);
    
    
       // y shift -0.465409
    const Int_t EtaNbins = 30;
    Double_t binse[31] = {-1.465409,-1.365409,-1.265409,-1.165409,-1.065409,-0.965409,-0.865409,-0.765409,-0.665409,-0.565409,-0.465409,-0.365409,-0.265409,-0.165409,-0.065409,0.034591,0.134591,0.234591,0.334591,0.434591,0.534591,0.634591,0.734591,0.834591,0.934591,1.034591,1.134591,1.234591,1.334591,1.434591,1.534591};
        Double_t* binsEta = new Double_t[31];
    for (int i=0; i<31; i++) {binsEta[i] = binse[i];}
    fdNdPtAnalysis->SetBinsEta(EtaNbins,binsEta);     
    
    
    // set centrality estimator
   // fdNdPtAnalysis->SetCentralityEstimators("NPA");
  

  // Add analysis object
  task->AddAnalysisObject( fdNdPtAnalysis );
	
  // Add task
  mgr->AddTask(task);

  // Create containers for input
  AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
 
  TString outputFileName = AliAnalysisManager::GetCommonFileName();

//  AliAnalysisDataContainer *coutput = mgr->CreateContainer("jgronef_dNdPtpPb_TPCITS", TList::Class(), AliAnalysisManager::kOutputContainer, "jgronef_dNdPtpPb_TPCITS.root");   //    <-- Old Way works on Batch
 
   AliAnalysisDataContainer *coutput = mgr->CreateContainer(Form("%s", contName), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:dNdPtHistos", mgr->GetCommonFileName())); //    <-- New Way changed to work on Grid
  
  
  mgr->ConnectInput(task, 0, cinput);
  mgr->ConnectOutput(task, 1, coutput);
    
  
  /*
   //                                                         Aus Phillips Macro kopiert:
  
   // Add task
   mgr->AddTask(task);
   
   // Create containers for input
   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
   
   TString outputFileName = AliAnalysisManager::GetCommonFileName();
   
   AliAnalysisDataContainer *coutput  = mgr->CreateContainer("dNdPtPbPb", 
							     TList::Class(),
							     AliAnalysisManager::kOutputContainer, 	
							     Form("%s:dNdPtHistos", mgr->GetCommonFileName()));
							     
							     mgr->ConnectInput(task, 0, cinput);
							     mgr->ConnectOutput(task, 1, coutput);
							     
							    */ 
  
  
  

}

 AddTask_dNdPtpPb.C:1
 AddTask_dNdPtpPb.C:2
 AddTask_dNdPtpPb.C:3
 AddTask_dNdPtpPb.C:4
 AddTask_dNdPtpPb.C:5
 AddTask_dNdPtpPb.C:6
 AddTask_dNdPtpPb.C:7
 AddTask_dNdPtpPb.C:8
 AddTask_dNdPtpPb.C:9
 AddTask_dNdPtpPb.C:10
 AddTask_dNdPtpPb.C:11
 AddTask_dNdPtpPb.C:12
 AddTask_dNdPtpPb.C:13
 AddTask_dNdPtpPb.C:14
 AddTask_dNdPtpPb.C:15
 AddTask_dNdPtpPb.C:16
 AddTask_dNdPtpPb.C:17
 AddTask_dNdPtpPb.C:18
 AddTask_dNdPtpPb.C:19
 AddTask_dNdPtpPb.C:20
 AddTask_dNdPtpPb.C:21
 AddTask_dNdPtpPb.C:22
 AddTask_dNdPtpPb.C:23
 AddTask_dNdPtpPb.C:24
 AddTask_dNdPtpPb.C:25
 AddTask_dNdPtpPb.C:26
 AddTask_dNdPtpPb.C:27
 AddTask_dNdPtpPb.C:28
 AddTask_dNdPtpPb.C:29
 AddTask_dNdPtpPb.C:30
 AddTask_dNdPtpPb.C:31
 AddTask_dNdPtpPb.C:32
 AddTask_dNdPtpPb.C:33
 AddTask_dNdPtpPb.C:34
 AddTask_dNdPtpPb.C:35
 AddTask_dNdPtpPb.C:36
 AddTask_dNdPtpPb.C:37
 AddTask_dNdPtpPb.C:38
 AddTask_dNdPtpPb.C:39
 AddTask_dNdPtpPb.C:40
 AddTask_dNdPtpPb.C:41
 AddTask_dNdPtpPb.C:42
 AddTask_dNdPtpPb.C:43
 AddTask_dNdPtpPb.C:44
 AddTask_dNdPtpPb.C:45
 AddTask_dNdPtpPb.C:46
 AddTask_dNdPtpPb.C:47
 AddTask_dNdPtpPb.C:48
 AddTask_dNdPtpPb.C:49
 AddTask_dNdPtpPb.C:50
 AddTask_dNdPtpPb.C:51
 AddTask_dNdPtpPb.C:52
 AddTask_dNdPtpPb.C:53
 AddTask_dNdPtpPb.C:54
 AddTask_dNdPtpPb.C:55
 AddTask_dNdPtpPb.C:56
 AddTask_dNdPtpPb.C:57
 AddTask_dNdPtpPb.C:58
 AddTask_dNdPtpPb.C:59
 AddTask_dNdPtpPb.C:60
 AddTask_dNdPtpPb.C:61
 AddTask_dNdPtpPb.C:62
 AddTask_dNdPtpPb.C:63
 AddTask_dNdPtpPb.C:64
 AddTask_dNdPtpPb.C:65
 AddTask_dNdPtpPb.C:66
 AddTask_dNdPtpPb.C:67
 AddTask_dNdPtpPb.C:68
 AddTask_dNdPtpPb.C:69
 AddTask_dNdPtpPb.C:70
 AddTask_dNdPtpPb.C:71
 AddTask_dNdPtpPb.C:72
 AddTask_dNdPtpPb.C:73
 AddTask_dNdPtpPb.C:74
 AddTask_dNdPtpPb.C:75
 AddTask_dNdPtpPb.C:76
 AddTask_dNdPtpPb.C:77
 AddTask_dNdPtpPb.C:78
 AddTask_dNdPtpPb.C:79
 AddTask_dNdPtpPb.C:80
 AddTask_dNdPtpPb.C:81
 AddTask_dNdPtpPb.C:82
 AddTask_dNdPtpPb.C:83
 AddTask_dNdPtpPb.C:84
 AddTask_dNdPtpPb.C:85
 AddTask_dNdPtpPb.C:86
 AddTask_dNdPtpPb.C:87
 AddTask_dNdPtpPb.C:88
 AddTask_dNdPtpPb.C:89
 AddTask_dNdPtpPb.C:90
 AddTask_dNdPtpPb.C:91
 AddTask_dNdPtpPb.C:92
 AddTask_dNdPtpPb.C:93
 AddTask_dNdPtpPb.C:94
 AddTask_dNdPtpPb.C:95
 AddTask_dNdPtpPb.C:96
 AddTask_dNdPtpPb.C:97
 AddTask_dNdPtpPb.C:98
 AddTask_dNdPtpPb.C:99
 AddTask_dNdPtpPb.C:100
 AddTask_dNdPtpPb.C:101
 AddTask_dNdPtpPb.C:102
 AddTask_dNdPtpPb.C:103
 AddTask_dNdPtpPb.C:104
 AddTask_dNdPtpPb.C:105
 AddTask_dNdPtpPb.C:106
 AddTask_dNdPtpPb.C:107
 AddTask_dNdPtpPb.C:108
 AddTask_dNdPtpPb.C:109
 AddTask_dNdPtpPb.C:110
 AddTask_dNdPtpPb.C:111
 AddTask_dNdPtpPb.C:112
 AddTask_dNdPtpPb.C:113
 AddTask_dNdPtpPb.C:114
 AddTask_dNdPtpPb.C:115
 AddTask_dNdPtpPb.C:116
 AddTask_dNdPtpPb.C:117
 AddTask_dNdPtpPb.C:118
 AddTask_dNdPtpPb.C:119
 AddTask_dNdPtpPb.C:120
 AddTask_dNdPtpPb.C:121
 AddTask_dNdPtpPb.C:122
 AddTask_dNdPtpPb.C:123
 AddTask_dNdPtpPb.C:124
 AddTask_dNdPtpPb.C:125
 AddTask_dNdPtpPb.C:126
 AddTask_dNdPtpPb.C:127
 AddTask_dNdPtpPb.C:128
 AddTask_dNdPtpPb.C:129
 AddTask_dNdPtpPb.C:130
 AddTask_dNdPtpPb.C:131
 AddTask_dNdPtpPb.C:132
 AddTask_dNdPtpPb.C:133
 AddTask_dNdPtpPb.C:134
 AddTask_dNdPtpPb.C:135
 AddTask_dNdPtpPb.C:136
 AddTask_dNdPtpPb.C:137
 AddTask_dNdPtpPb.C:138
 AddTask_dNdPtpPb.C:139
 AddTask_dNdPtpPb.C:140
 AddTask_dNdPtpPb.C:141
 AddTask_dNdPtpPb.C:142
 AddTask_dNdPtpPb.C:143
 AddTask_dNdPtpPb.C:144
 AddTask_dNdPtpPb.C:145
 AddTask_dNdPtpPb.C:146
 AddTask_dNdPtpPb.C:147
 AddTask_dNdPtpPb.C:148
 AddTask_dNdPtpPb.C:149
 AddTask_dNdPtpPb.C:150
 AddTask_dNdPtpPb.C:151
 AddTask_dNdPtpPb.C:152
 AddTask_dNdPtpPb.C:153
 AddTask_dNdPtpPb.C:154
 AddTask_dNdPtpPb.C:155
 AddTask_dNdPtpPb.C:156
 AddTask_dNdPtpPb.C:157
 AddTask_dNdPtpPb.C:158
 AddTask_dNdPtpPb.C:159
 AddTask_dNdPtpPb.C:160
 AddTask_dNdPtpPb.C:161
 AddTask_dNdPtpPb.C:162
 AddTask_dNdPtpPb.C:163
 AddTask_dNdPtpPb.C:164
 AddTask_dNdPtpPb.C:165
 AddTask_dNdPtpPb.C:166
 AddTask_dNdPtpPb.C:167
 AddTask_dNdPtpPb.C:168
 AddTask_dNdPtpPb.C:169
 AddTask_dNdPtpPb.C:170
 AddTask_dNdPtpPb.C:171
 AddTask_dNdPtpPb.C:172
 AddTask_dNdPtpPb.C:173
 AddTask_dNdPtpPb.C:174
 AddTask_dNdPtpPb.C:175
 AddTask_dNdPtpPb.C:176
 AddTask_dNdPtpPb.C:177
 AddTask_dNdPtpPb.C:178
 AddTask_dNdPtpPb.C:179
 AddTask_dNdPtpPb.C:180
 AddTask_dNdPtpPb.C:181
 AddTask_dNdPtpPb.C:182
 AddTask_dNdPtpPb.C:183
 AddTask_dNdPtpPb.C:184
 AddTask_dNdPtpPb.C:185
 AddTask_dNdPtpPb.C:186
 AddTask_dNdPtpPb.C:187
 AddTask_dNdPtpPb.C:188
 AddTask_dNdPtpPb.C:189
 AddTask_dNdPtpPb.C:190
 AddTask_dNdPtpPb.C:191
 AddTask_dNdPtpPb.C:192
 AddTask_dNdPtpPb.C:193