]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGGA/CaloTrackCorrelations/macros/AddTaskCaloTrackCorr.C
Merge branch 'master' into TPCdev
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / macros / AddTaskCaloTrackCorr.C
index 3220e5d2f26872da3b4f96e2d1cf3b566e122114..f577450b48cfeab4336825d059039a146d92f447 100644 (file)
@@ -99,6 +99,9 @@ AliAnalysisTaskCaloTrackCorrelation *AddTaskCaloTrackCorr(const TString  data
     ::Error("AddTask", "This task requires an input event handler");
     return NULL;
   }
+
+  // Make sure the B field is enabled for track selection, some cuts need it
+  ((AliInputEventHandler*)mgr->GetInputEventHandler())->SetNeedField(kTRUE);
   
   kInputDataType = "AOD";
   if(!kData.Contains("delta"))
@@ -476,18 +479,18 @@ AliCaloTrackReader * ConfigureReader()
   else
     reader->SwitchOnEventTriggerAtSE();  
   
-  reader->SetZvertexCut(10.);                // Open cut
+  reader->SetZvertexCut(10.);               // Open cut
   reader->SwitchOnPrimaryVertexSelection(); // and besides primary vertex
 
   if(kEventSelection)
   {
-    reader->SwitchOnEventSelection();         // remove pileup by default
-    reader->SwitchOnV0ANDSelection() ;        // and besides v0 AND
+    reader->SwitchOnEventPileUpRejection(); // remove pileup by default
+    reader->SwitchOnV0ANDSelection() ;      // and besides v0 AND
   }
   else 
   {
-    reader->SwitchOffEventSelection();         // remove pileup by default
-    reader->SwitchOffV0ANDSelection() ;        // and besides v0 AND
+    reader->SwitchOffPileUpEventRejection();// remove pileup by default
+    reader->SwitchOffV0ANDSelection() ;     // and besides v0 AND
   }
     
   if(kCollisions=="PbPb") 
@@ -576,7 +579,19 @@ AliCalorimeterUtils* ConfigureCaloUtils()
   printf("ConfigureCaloUtils() - EMCAL Recalibration ON? %d %d\n",recou->IsRecalibrationOn(), cu->IsRecalibrationOn());
   printf("ConfigureCaloUtils() - EMCAL BadMap        ON? %d %d\n",recou->IsBadChannelsRemovalSwitchedOn(), cu->IsBadChannelsRemovalSwitchedOn());
   
-    
+  
+  if(kCalorimeter=="PHOS")
+  {
+    if (kYears <  2014) cu->SetNumberOfSuperModulesUsed(3);
+    else                cu->SetNumberOfSuperModulesUsed(4);
+  }
+  else
+  {
+    if      (kYears == 2010) cu->SetNumberOfSuperModulesUsed(4); //EMCAL first year
+    else if (kYears <  2014) cu->SetNumberOfSuperModulesUsed(10);
+    else                     cu->SetNumberOfSuperModulesUsed(20);
+  }
+  
   // PHOS 
   cu->SwitchOffLoadOwnPHOSGeometryMatrices();
     
@@ -671,6 +686,7 @@ AliAnaPhoton* ConfigurePhotonAnalysis()
   ana->FillNOriginHistograms(20);
   ana->FillNPrimaryHistograms(20);
   
+  ana->SwitchOnRealCaloAcceptance(); // primary particle acceptance histograms
   ConfigureMC(ana);
   
   if(kPrint) ana->Print("");
@@ -679,13 +695,69 @@ AliAnaPhoton* ConfigurePhotonAnalysis()
   
 }
 
+//________________________________________________________________
+AliAnaEMCALTriggerClusters* ConfigureEMCALTriggerClusterAnalysis()
+{
+  // For filling all histograms meaninfully, in the reader, time cut must be off
+  // and bad triggered events not rejected, and of course analyze triggered events.
+  
+  AliAnaEMCALTriggerClusters *ana = new AliAnaEMCALTriggerClusters();
+  ana->SetDebug(kDebug); //10 for lots of messages
+  
+  // cluster selection cuts
+  
+  ana->SwitchOffFiducialCut();
+  ana->SetNCellCut(1);// At least 2 cells
+  ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
+  ana->SetMaxEnergy(1000);
+  ana->SetM02(1, 2) ;
+  ana->SwitchOnTrackMatchRejection() ;
+  
+  ana->AddToHistogramsName("EMCTriggerClusters_");
+  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
+  
+  if(kPrint) ana->Print("");
+  
+  return ana;
+  
+}
+
+//___________________________________________________
+AliAnaClusterPileUp* ConfigureClusterPileUpAnalysis()
+{
+  // For filling all histograms meaninfully, in the reader, time cut must be off
+  // and bad triggered events in different BC not rejected
+  
+  AliAnaClusterPileUp *ana = new AliAnaClusterPileUp();
+  ana->SetDebug(kDebug); //10 for lots of messages
+  
+  // cluster selection cuts
+  
+  ana->SwitchOffFiducialCut();
+  ana->SetNCellCut(1);// At least 2 cells
+  ana->SetMinEnergy(0.3); // avoid mip peak at E = 260 MeV
+  ana->SetMaxEnergy(1000);
+  
+  ana->AddToHistogramsName("ClusterPileUp_");
+  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
+  
+  if(kPrint) ana->Print("");
+  
+  return ana;
+  
+}
+
 //________________________________________________________________________________
 AliAnaElectron* ConfigureElectronAnalysis()
 {
   
   AliAnaElectron *ana = new AliAnaElectron();
   ana->SetDebug(kDebug); //10 for lots of messages
-    
+  
+  ana->FillAODWithElectrons();
+  //ana->FillAODWithHadrons();
+  //ana->FillAODWithAny();
+  
   if(kCalorimeter == "PHOS")
   {
     ana->SetNCellCut(2);// At least 2 cells
@@ -724,8 +796,6 @@ AliAnaElectron* ConfigureElectronAnalysis()
   ana->SwitchOffFillWeightHistograms()  ;
   ana->SwitchOffFiducialCut();
   
-  //ana->FillAODWithHadrons();
-  
   if(!kData.Contains("delta")) 
   {
     ana->SetOutputAODName(Form("Electron%s",kName.Data()));
@@ -966,25 +1036,47 @@ AliAnaPi0EbE* ConfigurePi0EbEAnalysis(TString particle,
   
   ana->SetAnalysisType(analysis);
   TString opt = "";
-  if(analysis==AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
-  if(analysis==AliAnaPi0EbE::kSSCalo)       opt = "SS";
-  
-  if(kCollisions=="pp") ana->SetMinPt(0.5);
-  else                  ana->SetMinPt(1.0);
+  if(analysis == AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
+  if(analysis == AliAnaPi0EbE::kSSCalo)       opt = "SS";
   
-  if(kCalorimeter=="EMCAL" && !kSimulation) ana->SetPairTimeCut(100);
-  
-  ana->SetMinDistanceToBadChannel(2, 4, 6);
-  ana->SwitchOnSplitClusterDistToBad();
+  if(analysis == AliAnaPi0EbE::kIMCalo && kCalorimeter=="EMCAL" && !kSimulation) ana->SetPairTimeCut(100);
+  if(analysis == AliAnaPi0EbE::kIMCaloTracks) ana->SetInputAODGammaConvName("PhotonsCTS");
 
+  // Common settings for all 3 type of analysis
+  
   ana->SwitchOnSelectedClusterHistoFill();
 
   ana->SetCalorimeter(kCalorimeter);
-  ana->SetTimeCut(-1e10,1e10); // Open time cut
   
-  // Input / output delta AOD settings
+  //Set Histograms name tag, bins and ranges
+  ana->AddToHistogramsName(Form("Ana%s%sEbE_TM%d_",particle.Data(),opt.Data(),kTM));
+  
+  // Specific settings for different type of analysis
+  
+  ana->SwitchOffFillWeightHistograms();
+  if(!kSimulation) ana->SwitchOnFillPileUpHistograms();
   
-  ana->SetInputAODName(Form("Photon%s",kName.Data()));
+  if(kTM)
+  {
+    //printf("--->>>REMOVE MATCHED Pi0\n");
+    ana->SwitchOnTrackMatchRejection() ;
+    ana->SwitchOffTMHistoFill() ;
+  }
+  else
+  {
+    //printf("---->>>ACCEPT MATCHED Pi0\n");
+    ana->SwitchOffTrackMatchRejection() ;
+    ana->SwitchOnTMHistoFill() ;
+  }
+  
+  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
+  
+  //ana->SwitchOnFillEMCALBCHistograms();
+  
+  if(kPrint) ana->Print("");
+  
+  ConfigureMC(ana);
+
   if(!kInputDataType.Contains("delta"))
   {
     ana->SetOutputAODName(Form("%s%s%s",particle.Data(), opt.Data(), kName.Data()));
@@ -994,15 +1086,12 @@ AliAnaPi0EbE* ConfigurePi0EbEAnalysis(TString particle,
   else
     ana->SetInputAODName(Form("%s%s%s",particle.Data(),opt.Data(),kName.Data()));
   
-  
-  if(analysis == AliAnaPi0EbE::kIMCaloTracks) ana->SetInputAODGammaConvName("PhotonsCTS");
-  
-  //Set Histograms name tag, bins and ranges
-  
-  ana->AddToHistogramsName(Form("Ana%s%sEbE_TM%d_",particle.Data(),opt.Data(),kTM));
-  
   if(analysis!=AliAnaPi0EbE::kSSCalo)
   {
+    // Input / output delta AOD settings
+    
+    ana->SetInputAODName(Form("Photon%s",kName.Data()));
+    
     AliNeutralMesonSelection *nms = ana->GetNeutralMesonSelection();
     nms->SetParticle(particle);
     
@@ -1031,6 +1120,11 @@ AliAnaPi0EbE* ConfigurePi0EbEAnalysis(TString particle,
     ana->SetNLMMinEnergy(1, 6);
     ana->SetNLMMinEnergy(2, 6);
     
+    ana->SetMinDistanceToBadChannel(2, 4, 6); // only use the first one
+    ana->SwitchOnSplitClusterDistToBad();
+    
+    ana->SetTimeCut(-1e10,1e10); // Open time cut
+
     // NLM cut, used in all, exclude clusters with more than 2 maxima
     ana->SetNLMCut(1, 2) ;
     
@@ -1086,30 +1180,6 @@ AliAnaPi0EbE* ConfigurePi0EbEAnalysis(TString particle,
     }
   }
   
-  ana->SwitchOffFillWeightHistograms();
-  if(!kSimulation) ana->SwitchOnFillPileUpHistograms();
-  
-  if(kTM)
-  {
-    //printf("--->>>REMOVE MATCHED Pi0\n");
-    ana->SwitchOnTrackMatchRejection() ;
-    ana->SwitchOffTMHistoFill() ;
-  }
-  else
-  {
-    //printf("---->>>ACCEPT MATCHED Pi0\n");
-    ana->SwitchOffTrackMatchRejection() ;
-    ana->SwitchOnTMHistoFill() ;
-  }
-  
-  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
-  
-  //ana->SwitchOnFillEMCALBCHistograms();
-  
-  if(kPrint) ana->Print("");
-  
-  ConfigureMC(ana);
-  
   return  ana;
   
 }
@@ -1222,15 +1292,13 @@ AliAnaParticleIsolation* ConfigureIsolationAnalysis(TString particle="Photon",
 
   SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
   
-  ana->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
-  ana->SetHistoPtSumRangeAndNBins   (0, 100, 250);
-  
   if(particle=="Hadron"  || particle.Contains("CTS"))
   {
     ana->GetHistogramRanges()->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 200) ;
     ana->GetHistogramRanges()->SetHistoEtaRangeAndNBins(-1.5, 1.5, 300) ;
   }
   
+  ana->SwitchOnRealCaloAcceptance(); // primary particle acceptance histograms
   ConfigureMC(ana);
   
   if(kPrint) ic ->Print("");
@@ -1252,12 +1320,21 @@ AliAnaParticleHadronCorrelation* ConfigureHadronCorrelationAnalysis(TString part
   AliAnaParticleHadronCorrelation *ana = new AliAnaParticleHadronCorrelation();
   ana->SetDebug(kDebug);
   
-  ana->SetMinimumTriggerPt(5);
-  ana->SetAssociatedPtRange(0.2,100); 
-  ana->SetDeltaPhiCutRange( TMath::Pi()/2,3*TMath::Pi()/2 ); //[90 deg, 270 deg]
+  ana->SwitchOnAbsoluteLeading();  // Select trigger leading particle of all the selected tracks
+  ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
   
-  ana->SetNAssocPtBins(9);
+  //ana->SwitchOnLeadHadronSelection();
+  //ana->SetLeadHadronPhiCut(TMath::DegToRad()*100., TMath::DegToRad()*260.);
+  //ana->SetLeadHadronPtCut(0.5, 100);
   
+  ana->SetTriggerPtRange(5,100);
+  ana->SetAssociatedPtRange(0.2,100);
+  //ana->SetDeltaPhiCutRange( TMath::Pi()/2,3*TMath::Pi()/2 ); //[90 deg, 270 deg]
+  ana->SetDeltaPhiCutRange  (TMath::DegToRad()*120.,TMath::DegToRad()*240.);
+  ana->SetUeDeltaPhiCutRange(TMath::DegToRad()*60. ,TMath::DegToRad()*120.);
+  ana->SwitchOnFillEtaGapHistograms();
+
+  ana->SetNAssocPtBins(9);
   ana->SetAssocPtBinLimit(0, 0.2) ;
   ana->SetAssocPtBinLimit(1, 0.5) ;
   ana->SetAssocPtBinLimit(2, 1)   ;
@@ -1268,7 +1345,8 @@ AliAnaParticleHadronCorrelation* ConfigureHadronCorrelationAnalysis(TString part
   ana->SetAssocPtBinLimit(7, 10)  ;
   ana->SetAssocPtBinLimit(8, 30)  ;
   ana->SetAssocPtBinLimit(9, 200) ;
-  
+  //ana->SwitchOnFillPtImbalancePerPtABinHistograms();
+
   ana->SelectIsolated(bIsolated); // do correlation with isolated photons
   
   if(bIsolated)
@@ -1304,9 +1382,6 @@ AliAnaParticleHadronCorrelation* ConfigureHadronCorrelationAnalysis(TString part
     
   }  
   
-  ana->SwitchOnAbsoluteLeading();  // Select trigger leading particle of all the selected tracks
-  ana->SwitchOffNearSideLeading(); // Select trigger leading particle of all the particles at +-90 degrees, default
-  
   // Mixing with own pool
   if(kMix)
   {
@@ -1317,17 +1392,19 @@ AliAnaParticleHadronCorrelation* ConfigureHadronCorrelationAnalysis(TString part
     ana->SwitchOffOwnMix();
   
   ana->SetNZvertBin(20);
-  
+  ana->SwitchOffCorrelationVzBin() ;
+  ana->SwitchOffFillHighMultiplicityHistograms();
+
   if(kCollisions=="pp")
   {
     ana->SetNMaxEvMix(100);    
     ana->SwitchOnTrackMultBins();
-    ana->SetNCentrBin(9); // Fixed track mult values
+    ana->SetNTrackMultBin(10);  // same as SetNCentrBin(10);
     ana->SetNRPBin(1);
   }
   else 
   {
-    ana->SetNMaxEvMix(10);    
+    ana->SetNMaxEvMix(10);
     ana->SwitchOffTrackMultBins(); // centrality bins
     ana->SetNCentrBin(3); 
     ana->SetNRPBin(3);
@@ -1396,10 +1473,8 @@ AliAnaParticleHadronCorrelation* ConfigureHadronCorrelationAnalysis(TString part
   ana->SwitchOffFillBradHistograms();
   
   // Underlying event
-  ana->SwitchOffEventSelection();
   ana->SwitchOnSeveralUECalculation();
   ana->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
-  ana->SetMultiBin(1);
   
   //Set Histograms name tag, bins and ranges
   
@@ -1453,17 +1528,6 @@ AliAnaCalorimeterQA* ConfigureQAAnalysis()
   ana->SwitchOffStudyWeight();
   ana->SwitchOnFillAllTrackMatchingHistogram();
   ana->SwitchOnFillAllCellTimeHisto() ;
-
-  if(kCalorimeter=="EMCAL")
-  {
-    if     (kYears==2010)  ana->SetNumberOfModules(4); 
-    else if(kYears==2011)  ana->SetNumberOfModules(10);
-    else                   ana->SetNumberOfModules(12); 
-  }
-  else 
-  {//PHOS
-    ana->SetNumberOfModules(3); 
-  }
   
   ana->AddToHistogramsName("QA_"); //Begining of histograms name
   SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
@@ -1476,6 +1540,43 @@ AliAnaCalorimeterQA* ConfigureQAAnalysis()
   
 }
 
+//________________________________________________________________
+AliAnaGeneratorKine* ConfigureGenKineAnalysis()
+{
+  // Analysis for parton, jets correlation with photon and pi0
+  
+  AliAnaGeneratorKine *ana = new AliAnaGeneratorKine();
+  ana->SetDebug(kDebug); //10 for lots of messages
+  
+  // Trigger detector, acceptance and pT cut
+  ana->SetTriggerDetector("EMCAL");
+  ana->SetMinPt(10); // Trigger photon, pi0 minimum pT
+  ana->GetFiducialCutForTrigger()->SetSimpleEMCALFiducialCut(0.6, 85, 175);
+  
+  // Particles associated to trigger or isolation cone acceptance and pT cut
+  ana->SetCalorimeter("EMCAL");
+  ana->SetMinChargedPt(0.2);
+  ana->SetMinNeutralPt(0.3);
+  ana->GetFiducialCut()->SetSimpleEMCALFiducialCut(0.65, 81, 179);
+  ana->GetFiducialCut()->SetSimpleCTSFiducialCut(0.9, 0, 360);
+  
+  // Isolation paramters
+  AliIsolationCut * ic =  ana->GetIsolationCut();
+  ic->SetDebug(kDebug);
+  ic->SetPtThreshold(0.5);
+  ic->SetConeSize(0.5);
+  ic->SetSumPtThreshold(1.0) ;
+  ic->SetICMethod(AliIsolationCut::kPtThresIC); // kSumPtIC
+  
+  ana->AddToHistogramsName("AnaGenKine_");
+  SetHistoRangeAndNBins(ana->GetHistogramRanges()); // see method below
+  
+  if(kPrint) ana->Print("");
+  
+  return ana;
+  
+}
+
 //________________________________________________________
 void ConfigureMC(AliAnaCaloTrackCorrBaseClass* ana)
 {
@@ -1538,19 +1639,38 @@ void SetHistoRangeAndNBins (AliHistogramRanges* histoRanges)
   histoRanges->SetHistodRRangeAndNBins(0.,0.15,150);//QA
 
   // QA, electron, charged
-  histoRanges->SetHistoPOverERangeAndNBins(0,  2.5 ,500);
-  histoRanges->SetHistodEdxRangeAndNBins  (0.,250.0,500);
+  histoRanges->SetHistoPOverERangeAndNBins(0,2.,200);
+  histoRanges->SetHistodEdxRangeAndNBins(0.,200.,200);
   
   // QA
   histoRanges->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
-  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,100);
   histoRanges->SetHistoVertexDistRangeAndNBins(0.,500.,500);
-  histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
   histoRanges->SetHistoZRangeAndNBins(-400,400,200);
   histoRanges->SetHistoRRangeAndNBins(400,450,25);
   histoRanges->SetHistoV0SignalRangeAndNBins(0,5000,500);
   histoRanges->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
-  histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,5000,500);
+  
+  // QA, correlation
+  if(kCollisions=="PbPb")
+  {
+    histoRanges->SetHistoNClusterCellRangeAndNBins(0,100,100);
+    histoRanges->SetHistoNClustersRangeAndNBins(0,500,50);
+    histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,2000,200);
+  }
+  else
+  {
+    histoRanges->SetHistoNClusterCellRangeAndNBins(0,50,50);
+    histoRanges->SetHistoNClustersRangeAndNBins(0,50,50);
+    histoRanges->SetHistoTrackMultiplicityRangeAndNBins(0,200,200);
+  }
+  
+  // xE, zT
+  histoRanges->SetHistoRatioRangeAndNBins(0.,2.,200);
+  histoRanges->SetHistoHBPRangeAndNBins  (0.,10.,200);
+  
+  // Isolation
+  histoRanges->SetHistoPtInConeRangeAndNBins(0, 50 , 250);
+  histoRanges->SetHistoPtSumRangeAndNBins   (0, 100, 250);
   
 }