ROOT logo
/*
 * AddTask macro for class 
 * Redmer Alexander Bertens, rbertens@cern.ch
 * Utrecht University, Utrecht, Netherlands
 */

AliAnalysisTaskLocalRhoDev* AddTaskLocalRhoDev(
  const char *ntracks           = "Tracks",     // track selection used for vn estimate
  const char *nclusters         = "",           // clusters (not used) 
  const char *njets             = "Jets",       // jet selection for finding leading jet
  const char *nrho              = "Rho",        // name of nominal rho
  const char *lrho              = "LocalRho",   // name of local rho object
  Double_t   jetradius          = 0.3,          // jet radius (to remove leading jet)
  Double_t   jetptcut           = 1,            
  Double_t   jetareacut         = 0.557,
  const char* type              = "TPC",
  Int_t      leadhadtype        = 0,
  const char *name              = "AliAnalysisTaskLocalRhoDev",    // task name
  TString    fitOpts            = "WLQI",                       // options for tfitter
  UInt_t     fitType            = AliAnalysisTaskLocalRhoDev::kCombined,   // fitting strategy
  TArrayI    *centralities      = 0x0,                                  // centrality binning for qa
  UInt_t     runMode            = AliAnalysisTaskLocalRhoDev::kGrid        // run mode 
  )
{  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    ::Error("AddTaskEmcalJetSample", "No analysis manager to connect to.");
    return NULL;
  }  
  
  // Check the analysis type using the event handlers connected to the analysis manager.
  //==============================================================================
  if (!mgr->GetInputEventHandler())
  {
    ::Error("AddTaskEmcalJetSample", "This task requires an input event handler");
    return NULL;
  }
  
  //-------------------------------------------------------
  // Init the task and do settings
  //-------------------------------------------------------

  AliAnalysisTaskLocalRhoDev* jetTask = new AliAnalysisTaskLocalRhoDev(name, runMode);
  // inherited setters
  AliParticleContainer* partCont = jetTask->AddParticleContainer(ntracks);
  if(partCont) {
      partCont->SetName("Tracks");
      partCont->SetParticlePtCut(.15);
  }
  AliJetContainer* jetCont = jetTask->AddJetContainer(njets, type, jetradius);
  if(jetCont) {
      jetCont->SetName("Jets");
      jetCont->SetPercAreaCut(jetareacut);
      jetCont->SetRhoName(nrho);
      jetCont->ConnectParticleContainer(partCont);
  }
  // task specific setters
  jetTask->SetDebugMode(-1);
  jetTask->SetModulationFitType(fitType);
  jetTask->SetModulationFitOptions(fitOpts);
  jetTask->SetModulationFitMinMaxP(.01, 1);
  // if centralities haven't been specified use defaults
  if(!centralities) {
     Double_t c[] = {0., 10., 30., 50., 70., 90.};
     jetTask->SetCentralityClasses(new TArrayD(sizeof(c)/sizeof(c[0]), c));
  }
  // pass the expected run lists to the task. the total list is used for QA plots which are stored per run-number, the semi-good list is used to change the phi acceptance of jets and pico trakcs, and - if an alternatie is provided - switch to a 'small rho' task, which also runs on limited acceptance
  Int_t totalRuns[] = {167813, 167988, 168066, 168068, 168069, 168076, 168104, 168212, 168311, 168322, 168325, 168341, 168361, 168362, 168458, 168460, 168461, 168992, 169091, 169094, 169138, 169143, 169167, 169417, 169835, 169837, 169838, 169846, 169855, 169858, 169859, 169923, 169956, 170027, 170036, 170081, /* up till here original good TPC list */169975, 169981, 170038, 170040, 170083, 170084, 170085, 170088, 170089, 170091, 170152, 170155, 170159, 170163, 170193, 170195, 170203, 170204, 170205, 170228, 170230, 170264, 170268, 170269, 170270, 170306, 170308, 170309, /* original semi-good tpc list */169415, 169411, 169035, 168988, 168984, 168826, 168777, 168512, 168511, 168467, 168464, 168342, 168310, 168115, 168108, 168107, 167987, 167915, 167903, /*new runs, good according to RCT */ 169238, 169160, 169156, 169148, 169145, 169144 /* run swith missing OROC 8 but seem ok in QA */};
  jetTask->SetExpectedRuns(new TArrayI(sizeof(totalRuns)/sizeof(totalRuns[0]), totalRuns));

  Int_t semiGoodRuns[] = {169975, 169981, 170038, 170040, 170083, 170084, 170085, 170088, 170089, 170091, 170152, 170155, 170159, 170163, 170193, 170195, 170203, 170204, 170205, 170228, 170230, 170264, 170268, 170269, 170270, 170306, 170308, 170309};
  jetTask->SetExpectedSemiGoodRuns(new TArrayI(sizeof(semiGoodRuns)/sizeof(semiGoodRuns[0]), semiGoodRuns));


  //-------------------------------------------------------
  // Final settings, pass to manager and set the containers
  //-------------------------------------------------------
  
  mgr->AddTask(jetTask);
  
  // Create containers for input/output
  AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer()  ;
  TString contname(name);
  contname += "_histos";
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(), 
							    TList::Class(),AliAnalysisManager::kOutputContainer,
							    Form("%s", AliAnalysisManager::GetCommonFileName()));
  mgr->ConnectInput  (jetTask, 0,  cinput1 );
  mgr->ConnectOutput (jetTask, 1, coutput1 );

  switch (runMode) {
      case AliAnalysisTaskLocalRhoDev::kLocal : {
          gStyle->SetOptFit(1);
          AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(Form("good_fits_%s", name), 
							    TList::Class(),AliAnalysisManager::kOutputContainer,
							    Form("%s", AliAnalysisManager::GetCommonFileName()));
          AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(Form("bad_fits_%s", name),
							    TList::Class(),AliAnalysisManager::kOutputContainer,
							     Form("%s", AliAnalysisManager::GetCommonFileName()));
          mgr->ConnectOutput (jetTask, 2, coutput2);
          mgr->ConnectOutput (jetTask, 3, coutput3);
      } break;
      default: break;
  }
  return jetTask;
}

AliAnalysisTaskLocalRhoDev* AddTaskLocalRhoDev(
  const char *ntracks           = "Tracks",     // track selection used for vn estimate
  const char *nclusters         = "",           // clusters (not used) 
  const char *njets             = "Jets",       // jet selection for finding leading jet
  const char *nrho              = "Rho",        // name of nominal rho
  const char *lrho              = "LocalRho",   // name of local rho object
  Double_t   jetradius          = 0.3,          // jet radius (to remove leading jet)
  Double_t   jetptcut           = 1,            
  Double_t   jetareacut         = 0.557,
  const Int_t type              = 0,
  Int_t      leadhadtype        = 0,
  const char *name              = "AliAnalysisTaskLocalRhoDev",    // task name
  TString    fitOpts            = "WLQI",                       // options for tfitter
  UInt_t     fitType            = AliAnalysisTaskLocalRhoDev::kCombined,   // fitting strategy
  TArrayI    *centralities      = 0x0,                                  // centrality binning for qa
  UInt_t     runMode            = AliAnalysisTaskLocalRhoDev::kGrid        // run mode 
  )
{
  // overloaded addtask for backward compatibility
  UInt_t jetType = 0;
  jetType |= AliEmcalJetTask::kAKT;

  if (type==0)
    jetType |= AliEmcalJetTask::kFullJet; 
  else if (type==1) 
    jetType |= AliEmcalJetTask::kChargedJet; 
  else if (type==2) 
    jetType |= AliEmcalJetTask::kNeutralJet;

  if (jetradius==0.2) 
    jetType |= AliEmcalJetTask::kR020Jet; 
  else if (jetradius==0.3) 
    jetType |= AliEmcalJetTask::kR030Jet;
  else if (jetradius==0.4) 
    jetType |= AliEmcalJetTask::kR040Jet;
  else
    jetType |= AliEmcalJetTask::kRX1Jet;

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