ROOT logo
//
// Wagon contacts: EMCAL Gustavo.Conesa.Balbastre@cern.ch
//                
//
AliAnalysisTaskCaloTrackCorrelation *AddTaskCalorimeterQA(const char *suffix="default",
                                                          Bool_t kSimulation = kFALSE,
                                                          TString outputFile = "",
                                                          Int_t year = 2012, 
                                                          Bool_t kPrintSettings = kFALSE)
{
  // Creates a PartCorr task for calorimeters performance studies, configures it and adds it to the analysis manager.
  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskPartCorr", "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("AddTaskPartCorr", "This task requires an input event handler");
    return NULL;
  }
  
  TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  
  Bool_t kUseKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
  
  TString ssuffix = suffix;
  if(kUseKinematics || kSimulation)
  {
    kSimulation = kTRUE;
    printf("AddTaskCalorimeterQA - CAREFUL : Triggered events not checked in simulation!! \n");
    if(!ssuffix.Contains("default")) return;
  }
  
  // Configure analysis
  //===========================================================================
  
  //Reader
  //For this particular analysis few things done by the reader.
  //Nothing else needs to be set.
  
  AliCaloTrackReader * reader = 0x0;
  if     (inputDataType.Contains("AOD")) reader = new AliCaloTrackAODReader();
  else if(inputDataType.Contains("ESD")) reader = new AliCaloTrackESDReader();
  //reader->SetDebug(10);//10 for lots of messages
  
  reader->SwitchOnEMCALCells(); 
  reader->SwitchOnEMCAL();
  reader->SwitchOnPHOSCells(); // For correlation plots
  reader->SwitchOnPHOS();      // For correlation plots
  reader->SetEMCALPtMin(0.); 
  reader->SwitchOnCTS();
  reader->SetCTSPtMin  (0.);
  reader->SetZvertexCut(10.);
  
  if(kSimulation)
  {
    if(inputDataType == "ESD")
    {
      reader->SwitchOnStack();          
      reader->SwitchOffAODMCParticles(); 
    }
    else if(inputDataType == "AOD")
    {
      reader->SwitchOffStack();          
      reader->SwitchOnAODMCParticles(); 
    }
  }
  
  reader->SetDeltaAODFileName(""); //Do not create deltaAOD file, this analysis do not create branches.
  reader->SwitchOffWriteDeltaAOD()  ;
  
  if(!ssuffix.Contains("default"))
  {
    reader->SwitchOnTriggerPatchMatching();
    reader->SwitchOffBadTriggerEventsRemoval();
    reader->SetTriggerPatchTimeWindow(8,9);
    //reader->SetEventTriggerL0Threshold(2.);
  }
  
  if(kPrintSettings) reader->Print("");
  
  // *** Calorimeters Utils	***
  AliCalorimeterUtils *cu = new AliCalorimeterUtils;
  // Remove clusters close to borders, at least max energy cell is 1 cell away 
  cu->SetNumberOfCellsFromEMCALBorder(1);

  if      (year == 2010) cu->SetNumberOfSuperModulesUsed(4); //EMCAL first year
  else if (year <  2014) cu->SetNumberOfSuperModulesUsed(10);
  else                   cu->SetNumberOfSuperModulesUsed(20);
  
  AliEMCALRecoUtils* reco = cu->GetEMCALRecoUtils();
  reco->SwitchOnRejectExoticCell() ; // reject exotic cells, fill different histograms for exotic clusters and good clusters
  reco->SetExoticCellDiffTimeCut(10000); // Open  
  reco->SetExoticCellFractionCut(0.95);  // 1-Ecross/Ecell > 0.95 -> out
  reco->SetExoticCellMinAmplitudeCut(0.75); // 750 MeV    
  
  cu->SetDebug(-1);
  if(kPrintSettings) cu->Print("");	
  
  // ##### Analysis algorithm settings ####
  
  AliAnaCalorimeterQA *emcalQA = new AliAnaCalorimeterQA();
  //emcalQA->SetDebug(10); //10 for lots of messages
  emcalQA->SetCalorimeter("EMCAL");
  if(kSimulation)
  {
    emcalQA->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
    emcalQA->SwitchOffStudyBadClusters();
    emcalQA->SwitchOffFillAllCellTimeHisto();
  }
  else
  {
    emcalQA->SwitchOffDataMC() ;
    emcalQA->SwitchOffStudyBadClusters();
    emcalQA->SwitchOnFillAllCellTimeHisto();
  }
  emcalQA->AddToHistogramsName("EMCAL_"); //Begining of histograms name
  emcalQA->SwitchOffFiducialCut();
  emcalQA->SwitchOnCorrelation();
  emcalQA->SwitchOffFillAllTH3Histogram();
  emcalQA->SwitchOffFillAllPositionHistogram();
  emcalQA->SwitchOffFillAllPositionHistogram2();
  
  //Set Histrograms bins and ranges
  emcalQA->GetHistogramRanges()->SetHistoPtRangeAndNBins(0, 50, 100) ;
  emcalQA->GetHistogramRanges()->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
  emcalQA->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-0.70, 0.70, 140) ;
  
  if     (year==2010)
  {  
    emcalQA->GetHistogramRanges()->SetHistoPhiRangeAndNBins(80*TMath::DegToRad(), 120*TMath::DegToRad(), 48) ;
    emcalQA->GetHistogramRanges()->SetHistoXRangeAndNBins(-230,90,120);
    emcalQA->GetHistogramRanges()->SetHistoYRangeAndNBins(370,450,40);
  }
  else //if(year==2011 || year==2012)
  {            
    emcalQA->GetHistogramRanges()->SetHistoPhiRangeAndNBins(80*TMath::DegToRad(), 180*TMath::DegToRad(), 120) ;
    emcalQA->GetHistogramRanges()->SetHistoXRangeAndNBins(-600,90,200);
    emcalQA->GetHistogramRanges()->SetHistoYRangeAndNBins(100,450,100);
  }
//  else 
//  {
//    emcalQA->GetHistogramRanges()->SetHistoPhiRangeAndNBins(79*TMath::DegToRad(), 320*TMath::DegToRad(), 400) ; // revise
//    emcalQA->GetHistogramRanges()->SetHistoXRangeAndNBins(-700,90,200); // revise
//    emcalQA->GetHistogramRanges()->SetHistoYRangeAndNBins(50,450,100);  // revise     
//  }
  
  emcalQA->GetHistogramRanges()->SetHistoMassRangeAndNBins(0., 0.65, 325) ;
  emcalQA->GetHistogramRanges()->SetHistoAsymmetryRangeAndNBins(0., 1. , 10 );
  emcalQA->GetHistogramRanges()->SetHistoPOverERangeAndNBins(0,2.,50);
  emcalQA->GetHistogramRanges()->SetHistodEdxRangeAndNBins(0.,200.,100);
  emcalQA->GetHistogramRanges()->SetHistodRRangeAndNBins(0.,0.10,50);
  emcalQA->GetHistogramRanges()->SetHistoTimeRangeAndNBins(400.,850,150);
  emcalQA->GetHistogramRanges()->SetHistoRatioRangeAndNBins(0.,2.,100);
  emcalQA->GetHistogramRanges()->SetHistoVertexDistRangeAndNBins(0.,500.,500);
  emcalQA->GetHistogramRanges()->SetHistoNClusterCellRangeAndNBins(0,50,50);
  emcalQA->GetHistogramRanges()->SetHistoZRangeAndNBins(-400,400,200);
  emcalQA->GetHistogramRanges()->SetHistoRRangeAndNBins(400,450,25);
  emcalQA->GetHistogramRanges()->SetHistoV0SignalRangeAndNBins(0,5000,100);
  emcalQA->GetHistogramRanges()->SetHistoV0MultiplicityRangeAndNBins(0,5000,100);
  emcalQA->GetHistogramRanges()->SetHistoTrackMultiplicityRangeAndNBins(0,2500,100);
  emcalQA->GetHistogramRanges()->SetHistoShowerShapeRangeAndNBins(0, 3, 120);
  emcalQA->GetHistogramRanges()->SetHistoDiffTimeRangeAndNBins(-300, 300, 120);
  emcalQA->GetHistogramRanges()->SetHistoTrackResidualEtaRangeAndNBins(-0.075,0.075,50);
  emcalQA->GetHistogramRanges()->SetHistoTrackResidualPhiRangeAndNBins(-0.075,0.075,50);

  if(kPrintSettings) emcalQA->Print("");
  
  // #### Configure Maker ####
  AliAnaCaloTrackCorrMaker * maker = new AliAnaCaloTrackCorrMaker();
  if(ssuffix.Contains("default")) maker->SwitchOffDataControlHistograms();
  else                            maker->SwitchOnDataControlHistograms();
  maker->SetReader(reader);//pointer to reader
  maker->SetCaloUtils(cu); //pointer to calorimeter utils
  maker->AddAnalysis(emcalQA,0);
  maker->SetAnaDebug(-1)  ; // 0 to at least print the event number
  maker->SwitchOnHistogramsMaker()  ;
  maker->SwitchOffAODsMaker()  ;
  if(kPrintSettings) maker->Print("");
  
  printf("======================== \n");
  printf(" End Configuration of Calorimeter QA \n");
  printf("======================== \n");
  
  // Create task
  //===========================================================================
  AliAnalysisTaskCaloTrackCorrelation * task = new AliAnalysisTaskCaloTrackCorrelation (Form("CalorimeterPerformance_%s",suffix));
  task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
  //task->SetDebugLevel(-1);
  task->SetAnalysisMaker(maker);	
  task->SetBranches("ESD:AliESDRun.,AliESDHeader"); //just a trick to get Constantin's analysis to work
  mgr->AddTask(task);
  
  //Create containers
  //  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer("Calo.Performance",TList::Class(),
  //							   AliAnalysisManager::kOutputContainer, "Calo.Performance.root");
	
  TString cname;
  if(outputFile.Length()==0)outputFile = AliAnalysisManager::GetCommonFileName(); 
  
  
  cname = Form("CaloQA_%s", suffix);
  AliAnalysisDataContainer *cout_pc   = mgr->CreateContainer(cname, TList::Class(), 
                                                             AliAnalysisManager::kOutputContainer, 
                                                             Form("%s:%s",outputFile.Data(),cname.Data()));
  
//  cname = Form("CaloQACuts_%s", suffix);
//  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(cname, TList::Class(), 
//                                                             AliAnalysisManager::kParamContainer, 
//                                                             Form("%s:%s",outputFile.Data(),cname.Data()));
  
	//Form("%s:PartCorrCuts",outputfile.Data()));	
  // 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  (task, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput (task, 1, cout_pc);
//  mgr->ConnectOutput (task, 2, cout_cuts);
  
  return task;
}


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