]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/macros/AddTaskPi0.C
cov fixes
[u/mrichter/AliRoot.git] / PWG4 / macros / AddTaskPi0.C
index 8fbed4849a9c13a1727404359848e4cb4d0d1f05..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")){
@@ -88,14 +88,15 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
     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    ***
@@ -106,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();
@@ -150,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.
@@ -217,15 +226,19 @@ AliAnalysisTaskParticleCorrelation *AddTaskPi0(TString data, TString calorimeter
   anapi0->SwitchOnOwnMix(); //Off when mixing done with general mixing frame
   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(10);
-  anapi0->SetNRPBin(1);
-  anapi0->SetNMaxEvMix(50);
+
   
   if(kUseKinematics)anapi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
   else              anapi0->SwitchOffDataMC() ;
@@ -245,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();
@@ -254,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()  ;
@@ -270,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.