ROOT logo
/**
 * @file   AddTaskForwarddNdeta.C
 * @author Christian Holm Christensen <cholm@nbi.dk>
 * @date   Fri Jan 28 10:22:26 2011
 * 
 * @brief Script to add a multiplicity task for the central
 *        @f$\eta@f$ region
 * 
 * 
 * @ingroup pwglf_forward_scripts_tasks
 */
/** 
 * Create the Forward @f$ dN/d\eta@f$ analysis task 
 * 
 * @param trig      Trigger to use 
 * @param vzMin     Smallest @f$ v_z@f$
 * @param vzMax     Biggest @f$ v_z@f$
 * @param usePhiAcc Use stored phi acceptance 
 * @param useAsymm  Make asymmetric bins 
 *
 * @return Newly created and configured task
 *
 * @ingroup pwglf_forward_dndeta
 */

AliAnalysisTask*
AddTaskForwardMultDists(const char* trig      = "V0AND", 
			Double_t    vzMin     = -4, 
			Double_t    vzMax     = +4,
			Bool_t      usePhiAcc = true,
			Bool_t      useAsymm  = false)
{
  // --- Load libraries ----------------------------------------------
  gROOT->LoadClass("AliAODForwardMult", "libPWGLFforward2");

  // --- Analysis manager --------------------------------------------
  AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();

  // --- Check that we have an AOD input handler ---------------------
  UShort_t aodInput = 0;
  if (!(aodInput = AliForwardUtil::CheckForAOD())) 
    Fatal("","Cannot proceed without and AOD handler");
  if (aodInput == 2 &&
      !AliForwardUtil::CheckForTask("AliForwardMultiplicityBase")) 
    Fatal("","The relevant task wasn't added to the train");


  // --- Make our object ---------------------------------------------
  AliForwardMultDists* task = new AliForwardMultDists("Forward");
  
  // Set the vertex range to use 
  task->SetIpZRange(vzMin, vzMax);
  // Set the trigger mask to use (INEL,INEL>0,NSD)
  task->SetTriggerMask(trig);
  // Set whether to use stored phi acceptance 
  task->SetUsePhiAcc(usePhiAcc);
  // add the task 
  mgr->AddTask(task);

  // Variable size axis objects
  // for |eta|<0.5 from CMD
  AliForwardMultDists::BinSpec b05(-0.5, 0.5, -0.5);
  b05.Push(21, 1);
  b05.Push(1, 3); 
  b05.Push(1, 5);
  b05.Push(3, 5); // <-- Extra 

  // for |eta|<0.5 from ALICE
  AliForwardMultDists::BinSpec a05(-0.5, 0.5, -0.5);
  a05.Push(21, 1);
  a05.Push(3, 2);

  // For |eta|<1 from CMS 
  AliForwardMultDists::BinSpec b10(-1.0, 1.0, -0.5);
  b10.Push(35, 1);
  b10.Push(1, 3);
  b10.Push(4, 5);
  b10.Push(2, 5); // <-- Extra 

  // For |eta|<1 from ALICE 
  AliForwardMultDists::BinSpec a10(-1.0, 1.0, -0.5);
  a10.Push(41, 1);
  a10.Push(1,  2);

  // For |eta|<1.3 from ALICE 
  AliForwardMultDists::BinSpec a13(-1.3, 1.3, -0.5);
  a13.Push(41, 1);
  a13.Push(7,  2);

  // For |eta|<1.5 from CMS 
  AliForwardMultDists::BinSpec b15(-1.5, 1.5, -0.5);
  b15.Push(46, 1);
  b15.Push(1,  2);
  b15.Push(1,  3); 
  b15.Push(4,  5);
  b15.Push(4,  5); // <-- Extra

  // for |eta|<2.0 from CMS 
  AliForwardMultDists::BinSpec b20(-2.0, 2.0, -0.5);
  b20.Push(62, 1);
  b20.Push(2,  2);
  b20.Push(1,  4);
  b20.Push(3,  10);
  b20.Push(2,  10); // <-- Extra

  // for |eta|<2 from CMS 
  AliForwardMultDists::BinSpec b24(-2.4, 2.4, -0.5);
  b24.Push(57, 1);
  b24.Push(1,  2);
  b24.Push(1,  3); 
  b24.Push(3,  10);
  b24.Push(4,  10); // <-- Extra
  
  // Add bins 
  AliForwardMultDists::BinSpec*  bs[] = { &b05, &b10, &b15, &b20, &b24, 0 };
  AliForwardMultDists::BinSpec** pb   = bs;
  while (*pb) {
    AliForwardMultDists::BinSpec* b = *pb;
    task->AddBin(*b);
    if (useAsymm) { 
      task->AddBin(b->fEtaMin, 0,          b->Axis());
      task->AddBin(0,          b->fEtaMax, b->Axis());
    }
    pb++;
  }

  // --- create containers for input/output --------------------------
  AliAnalysisDataContainer *sums = 
    mgr->CreateContainer("ForwardMultSums", TList::Class(), 
			 AliAnalysisManager::kOutputContainer, 
			 AliAnalysisManager::GetCommonFileName());
  AliAnalysisDataContainer *output = 
    mgr->CreateContainer("ForwardMultResults", TList::Class(), 
			 AliAnalysisManager::kParamContainer, 
			 AliAnalysisManager::GetCommonFileName());
  
  // --- connect input/output ----------------------------------------
  mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(task, 1, sums);
  mgr->ConnectOutput(task, 2, output);

  return task;
}

  
//________________________________________________________________________
//
// EOF
// 
 AddTaskForwardMultDists.C:1
 AddTaskForwardMultDists.C:2
 AddTaskForwardMultDists.C:3
 AddTaskForwardMultDists.C:4
 AddTaskForwardMultDists.C:5
 AddTaskForwardMultDists.C:6
 AddTaskForwardMultDists.C:7
 AddTaskForwardMultDists.C:8
 AddTaskForwardMultDists.C:9
 AddTaskForwardMultDists.C:10
 AddTaskForwardMultDists.C:11
 AddTaskForwardMultDists.C:12
 AddTaskForwardMultDists.C:13
 AddTaskForwardMultDists.C:14
 AddTaskForwardMultDists.C:15
 AddTaskForwardMultDists.C:16
 AddTaskForwardMultDists.C:17
 AddTaskForwardMultDists.C:18
 AddTaskForwardMultDists.C:19
 AddTaskForwardMultDists.C:20
 AddTaskForwardMultDists.C:21
 AddTaskForwardMultDists.C:22
 AddTaskForwardMultDists.C:23
 AddTaskForwardMultDists.C:24
 AddTaskForwardMultDists.C:25
 AddTaskForwardMultDists.C:26
 AddTaskForwardMultDists.C:27
 AddTaskForwardMultDists.C:28
 AddTaskForwardMultDists.C:29
 AddTaskForwardMultDists.C:30
 AddTaskForwardMultDists.C:31
 AddTaskForwardMultDists.C:32
 AddTaskForwardMultDists.C:33
 AddTaskForwardMultDists.C:34
 AddTaskForwardMultDists.C:35
 AddTaskForwardMultDists.C:36
 AddTaskForwardMultDists.C:37
 AddTaskForwardMultDists.C:38
 AddTaskForwardMultDists.C:39
 AddTaskForwardMultDists.C:40
 AddTaskForwardMultDists.C:41
 AddTaskForwardMultDists.C:42
 AddTaskForwardMultDists.C:43
 AddTaskForwardMultDists.C:44
 AddTaskForwardMultDists.C:45
 AddTaskForwardMultDists.C:46
 AddTaskForwardMultDists.C:47
 AddTaskForwardMultDists.C:48
 AddTaskForwardMultDists.C:49
 AddTaskForwardMultDists.C:50
 AddTaskForwardMultDists.C:51
 AddTaskForwardMultDists.C:52
 AddTaskForwardMultDists.C:53
 AddTaskForwardMultDists.C:54
 AddTaskForwardMultDists.C:55
 AddTaskForwardMultDists.C:56
 AddTaskForwardMultDists.C:57
 AddTaskForwardMultDists.C:58
 AddTaskForwardMultDists.C:59
 AddTaskForwardMultDists.C:60
 AddTaskForwardMultDists.C:61
 AddTaskForwardMultDists.C:62
 AddTaskForwardMultDists.C:63
 AddTaskForwardMultDists.C:64
 AddTaskForwardMultDists.C:65
 AddTaskForwardMultDists.C:66
 AddTaskForwardMultDists.C:67
 AddTaskForwardMultDists.C:68
 AddTaskForwardMultDists.C:69
 AddTaskForwardMultDists.C:70
 AddTaskForwardMultDists.C:71
 AddTaskForwardMultDists.C:72
 AddTaskForwardMultDists.C:73
 AddTaskForwardMultDists.C:74
 AddTaskForwardMultDists.C:75
 AddTaskForwardMultDists.C:76
 AddTaskForwardMultDists.C:77
 AddTaskForwardMultDists.C:78
 AddTaskForwardMultDists.C:79
 AddTaskForwardMultDists.C:80
 AddTaskForwardMultDists.C:81
 AddTaskForwardMultDists.C:82
 AddTaskForwardMultDists.C:83
 AddTaskForwardMultDists.C:84
 AddTaskForwardMultDists.C:85
 AddTaskForwardMultDists.C:86
 AddTaskForwardMultDists.C:87
 AddTaskForwardMultDists.C:88
 AddTaskForwardMultDists.C:89
 AddTaskForwardMultDists.C:90
 AddTaskForwardMultDists.C:91
 AddTaskForwardMultDists.C:92
 AddTaskForwardMultDists.C:93
 AddTaskForwardMultDists.C:94
 AddTaskForwardMultDists.C:95
 AddTaskForwardMultDists.C:96
 AddTaskForwardMultDists.C:97
 AddTaskForwardMultDists.C:98
 AddTaskForwardMultDists.C:99
 AddTaskForwardMultDists.C:100
 AddTaskForwardMultDists.C:101
 AddTaskForwardMultDists.C:102
 AddTaskForwardMultDists.C:103
 AddTaskForwardMultDists.C:104
 AddTaskForwardMultDists.C:105
 AddTaskForwardMultDists.C:106
 AddTaskForwardMultDists.C:107
 AddTaskForwardMultDists.C:108
 AddTaskForwardMultDists.C:109
 AddTaskForwardMultDists.C:110
 AddTaskForwardMultDists.C:111
 AddTaskForwardMultDists.C:112
 AddTaskForwardMultDists.C:113
 AddTaskForwardMultDists.C:114
 AddTaskForwardMultDists.C:115
 AddTaskForwardMultDists.C:116
 AddTaskForwardMultDists.C:117
 AddTaskForwardMultDists.C:118
 AddTaskForwardMultDists.C:119
 AddTaskForwardMultDists.C:120
 AddTaskForwardMultDists.C:121
 AddTaskForwardMultDists.C:122
 AddTaskForwardMultDists.C:123
 AddTaskForwardMultDists.C:124
 AddTaskForwardMultDists.C:125
 AddTaskForwardMultDists.C:126
 AddTaskForwardMultDists.C:127
 AddTaskForwardMultDists.C:128
 AddTaskForwardMultDists.C:129
 AddTaskForwardMultDists.C:130
 AddTaskForwardMultDists.C:131
 AddTaskForwardMultDists.C:132
 AddTaskForwardMultDists.C:133
 AddTaskForwardMultDists.C:134
 AddTaskForwardMultDists.C:135
 AddTaskForwardMultDists.C:136
 AddTaskForwardMultDists.C:137
 AddTaskForwardMultDists.C:138
 AddTaskForwardMultDists.C:139
 AddTaskForwardMultDists.C:140
 AddTaskForwardMultDists.C:141
 AddTaskForwardMultDists.C:142
 AddTaskForwardMultDists.C:143
 AddTaskForwardMultDists.C:144
 AddTaskForwardMultDists.C:145
 AddTaskForwardMultDists.C:146
 AddTaskForwardMultDists.C:147
 AddTaskForwardMultDists.C:148
 AddTaskForwardMultDists.C:149
 AddTaskForwardMultDists.C:150