]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/macros/AddTaskPi0.C
adding the option for hybrid tracks global+global constrained as well as global+TPC...
[u/mrichter/AliRoot.git] / PWG4 / macros / AddTaskPi0.C
index 027cbdb189baaac59c87159995ee256b8a8af831..89b028cb2dc971af4e4e2b4a7853f32bac9feebc 100644 (file)
@@ -1,4 +1,6 @@
-AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter, Bool_t kPrintSettings = kFALSE,Bool_t kSimulation = kFALSE, Bool_t outputAOD=kFALSE, TString outputfile = "", Int_t year = 2010,TString col = "pp",Bool_t oldAOD=kFALSE)
+AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter, Bool_t kPrintSettings = kFALSE,Bool_t kSimulation = kFALSE, 
+                                               Bool_t outputAOD=kFALSE, TString outputfile = "", Int_t year = 2010,TString col = "pp",
+                                               Bool_t withQA = kFALSE)
 {
   // Creates a PartCorr task, configures it and adds it to the analysis manager.
   
@@ -51,8 +53,6 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
     reader->SwitchOnPHOSCells();  
     reader->SwitchOnPHOS();
   }
-
-   reader->SwitchOffSuspiciousClustersRemoval();  //EMCAL
   
   // for case data="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
   if(data.Contains("delta")){
@@ -76,15 +76,27 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
   //In case of AODs created only for calorimeters, and track information filtered
   //CTS is off when calling this method
   //reader->SwitchOnCaloFilterPatch();
+  //Event selection
+  if     (col=="pp"  ) {
+    reader->SwitchOnEventSelection(); //remove pileup by default
+    reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
+    reader->SwitchOffPrimaryVertexSelection(); // and besides primary vertex
+  }
+  else if(col=="PbPb") {
+    reader->SwitchOffEventSelection(); //remove pileup by default
+    reader->SwitchOffV0ANDSelection() ; // and besides v0 AND
+    reader->SwitchOffPrimaryVertexSelection(); // and besides primary vertex
+  }
   
-  reader->SetZvertexCut(10.);
+  if     (col=="pp"  )   reader->SetZvertexCut(50.);  //Open cut
+  else if(col=="PbPb")   reader->SetZvertexCut(10.);  //Centrality defined in this range.
   
   //Min particle pT
   reader->SetEMCALPtMin(0.5); 
+  reader->SetEMCALPtMax(30); 
   reader->SetPHOSPtMin(0.);
   reader->SetCTSPtMin(0.);
   if(outputAOD)  reader->SwitchOnWriteDeltaAOD()  ;
-  if(oldAOD) reader->SwitchOnOldAODs();
   if(kPrintSettings) reader->Print("");
   
   // *** Calorimeters Utils    ***
@@ -95,6 +107,13 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
   cu->SetNumberOfCellsFromEMCALBorder(1);
   cu->SetNumberOfCellsFromPHOSBorder(2);
   
+  if     (col=="pp"  ) {
+    cu->SwitchOnCorrectClusterLinearity();
+    AliEMCALRecoUtils * reco = cu->GetEMCALRecoUtils();
+    reco->SetNonLinearityFunction(AliEMCALRecoUtils::kBeamTestCorrected);
+    reco->SwitchOnRejectExoticCluster();
+  }
+  
   // Remove EMCAL hottest channels for first LHC10 periods     
   //  cu->SwitchOnBadChannelsRemoval();
   //  cu->SwitchOnDistToBadChannelRecalculation();
@@ -139,6 +158,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
   else {//EMCAL
     anaphoton->SetNCellCut(1);// At least 2 cells
     anaphoton->SetMinPt(0.5); // no effect minium EMCAL cut.
+    anaphoton->SetMaxPt(30); 
     //if(!kUseKinematics) anaphoton->SetTimeCut(400,900);// Time window of [400-900] ns
     //anaphoton->SetMinDistanceToBadChannel(6, 12, 18);//For officially produced ESDs/AODs
     anaphoton->SetMinDistanceToBadChannel(1, 2, 3);//For filtered AODs, new releases.
@@ -166,8 +186,8 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
   anaphoton->AddToHistogramsName("AnaPhotonCorr_");
   //Set Histograms bins and ranges
   anaphoton->SetHistoPtRangeAndNBins(0, 30, 150) ;
-  if(year==2010)anaphoton->SetHistoPhiRangeAndNBins(78, 122*TMath::DegToRad(), 44*TMath::DegToRad()) ;
-  else          anaphoton->SetHistoPhiRangeAndNBins(78, 182*TMath::DegToRad(), 104*TMath::DegToRad()) ;
+  if(year==2010)anaphoton->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
+  else          anaphoton->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
   anaphoton->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
   if(kPrintSettings) anaphoton->Print("");
   
@@ -179,17 +199,16 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
   anapi0->SetDebug(-1);//10 for lots of messages
   anapi0->SetInputAODName(Form("Photons%s",calorimeter.Data()));
   anapi0->SetCalorimeter(calorimeter);
-  
   anapi0->SwitchOffMultipleCutAnalysis(); 
   //anapi0->SetNPtCuts(2);
-  anapi0->SetNAsymCuts(3);
+  //anapi0->SetNAsymCuts(2);
   //anapi0->SetNNCellCuts(2);
-  anapi0->SetNPIDBits(1);
+  //anapi0->SetNPIDBits(1);
   
   //anapi0->SetPtCutsAt(0,0.3); anapi0->SetPtCutsAt(1,0.5);
   //anapi0->SetAsymCutsAt(0,0.1);anapi0->SetAsymCutsAt(1,0.5);
   //anapi0->SetNCellCutsAt(0,1); anapi0->SetNCellCutsAt(1,2);
-  anapi0->SetPIDBitsAt(0,0); //No Cut
+  //anapi0->SetPIDBitsAt(0,0); //No Cut
   //anapi0->SetPIDBitsAt(1,2); //Dispersion Cut
 
   
@@ -205,12 +224,21 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
        
   //settings for pp collision mixing
   anapi0->SwitchOnOwnMix(); //Off when mixing done with general mixing frame
-  if     (col=="pp"  ) anapi0->SetNCentrBin(1);
-  else if(col=="PbPb") anapi0->SetNCentrBin(10);
+  if     (col=="pp"  ) {
+    anapi0->SetNCentrBin(1);
+    anapi0->SetNZvertBin(10);
+    anapi0->SetNRPBin(1);
+    anapi0->SetNMaxEvMix(100);    
+    anapi0->SwitchOnSMCombinations();
+  }
+  else if(col=="PbPb") {
+    anapi0->SetNCentrBin(10);
+    anapi0->SetNZvertBin(10);
+    anapi0->SetNRPBin(4);
+    anapi0->SetNMaxEvMix(10);
+    anapi0->SwitchOffSMCombinations();
+  }
 
-  anapi0->SetNZvertBin(1);
-  anapi0->SetNRPBin(1);
-  anapi0->SetNMaxEvMix(50);
   
   if(kUseKinematics)anapi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
   else              anapi0->SwitchOffDataMC() ;
@@ -221,8 +249,8 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
   }
   anapi0->SetHistoPtRangeAndNBins(0, 30, 150) ;    
   anapi0->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
-  if(year==2010)anapi0->SetHistoPhiRangeAndNBins(78, 122*TMath::DegToRad(), 44*TMath::DegToRad()) ;
-  else          anapi0->SetHistoPhiRangeAndNBins(78, 182*TMath::DegToRad(), 104*TMath::DegToRad()) ;
+  if(year==2010)anaphoton->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
+  else          anaphoton->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
 
   anapi0->SetHistoMassRangeAndNBins(0., 1., 200) ;
   anapi0->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
@@ -230,6 +258,57 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
 
   if(kPrintSettings) anapi0->Print("");
 
+  //QA
+  if (withQA) {
+    AliAnaCalorimeterQA *emcalQA = new AliAnaCalorimeterQA();
+    //emcalQA->SetDebug(10); //10 for lots of messages
+    emcalQA->SetCalorimeter("EMCAL");
+    if(kUseKinematics) emcalQA->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
+    else  emcalQA->SwitchOffDataMC() ;
+    emcalQA->AddToHistogramsName("QA_"); //Begining of histograms name
+    //emcalQA->SetFiducialCut(fidCut);
+    emcalQA->SwitchOffFiducialCut();
+    emcalQA->SwitchOffPlotsMaking();
+    emcalQA->SwitchOffCorrelation();
+    //  if(!kUseKinematics)emcalQA->SetTimeCut(400,850);//Open for the moment
+    //Set Histrograms bins and ranges
+    emcalQA->SetHistoPtRangeAndNBins(0, 50, 200) ;
+    emcalQA->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
+    emcalQA->SetHistoEtaRangeAndNBins(-0.71, 0.71, 142) ;
+    
+    if(year==2010){  
+      emcalQA->SetNumberOfModules(4); 
+      emcalQA->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
+      emcalQA->SetHistoXRangeAndNBins(-230,90,60);
+      emcalQA->SetHistoYRangeAndNBins(370,450,20);
+    }
+    else{            
+      emcalQA->SetNumberOfModules(10); 
+      emcalQA->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
+      emcalQA->SetHistoXRangeAndNBins(-600,90,100);
+      emcalQA->SetHistoYRangeAndNBins(100,450,50);
+    }
+    
+    emcalQA->SwitchOffFillAllPi0Histogram();
+    emcalQA->SwitchOffFillAllTrackMatchingHistogram();
+    emcalQA->SwitchOffFillAllTH3Histogram();
+    emcalQA->SwitchOffFillAllPositionHistogram2();
+    
+    emcalQA->SetHistoMassRangeAndNBins(0., 1, 100) ;
+    emcalQA->SetHistoAsymmetryRangeAndNBins(0., 1. , 10 );
+    emcalQA->SetHistoPOverERangeAndNBins(0,10.,50);
+    emcalQA->SetHistodEdxRangeAndNBins(0.,200.,50);
+    emcalQA->SetHistodRRangeAndNBins(0.,TMath::Pi(),75);
+    emcalQA->SetHistoTimeRangeAndNBins(300.,900,150);
+    emcalQA->SetHistoRatioRangeAndNBins(0.,2.,100);
+    emcalQA->SetHistoVertexDistRangeAndNBins(0.,100.,100);
+    emcalQA->SetHistoNClusterCellRangeAndNBins(0,500,500);
+    emcalQA->SetHistoZRangeAndNBins(-400,400,100);
+    emcalQA->SetHistoRRangeAndNBins(400,450,25);
+    emcalQA->SetHistoV0SignalRangeAndNBins(0,5000,100);
+    emcalQA->SetHistoV0MultiplicityRangeAndNBins(0,5000,100);
+    emcalQA->SetHistoTrackMultiplicityRangeAndNBins(0,5000,100);
+  }//withQA
   
   // #### Configure Maker ####
   AliAnaPartCorrMaker * maker = new AliAnaPartCorrMaker();
@@ -239,6 +318,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
   // Particle selection analysis
   maker->AddAnalysis(anaphoton,n++);
   maker->AddAnalysis(anapi0,n++);
+  if(withQA)maker->AddAnalysis(emcalQA,n++);  
   maker->SetAnaDebug(-1)  ;
   maker->SwitchOnHistogramsMaker()  ;
   if(data.Contains("delta")) maker->SwitchOffAODsMaker()  ;
@@ -255,6 +335,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
   AliAnalysisTaskParticleCorrelation * task = new AliAnalysisTaskParticleCorrelation (Form("PartCorr%s",calorimeter.Data()));
   task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
   //task->SetDebugLevel(-1);
+  task->SetBranches("ESD:AliESDRun.,AliESDHeader"); //just a trick to get Constantin's analysis to work
   if(data=="ESD")task->SelectCollisionCandidates();
   task->SetAnalysisMaker(maker);
   //if(!kSimulation)task->SelectCollisionCandidates(); //AliPhysicsSelection has to be attached before.