]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/macros/AddTaskPartCorr.C
update some analysis parameters
[u/mrichter/AliRoot.git] / PWG4 / macros / AddTaskPartCorr.C
index 839f9a1fb6ae9d87e8fd5a890e973fb0e6c2d260..61ba6464ac4dcd6b45b66f3f377fed1520aa85e5 100644 (file)
@@ -1,4 +1,4 @@
-AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calorimeter, Bool_t kPrintSettings = kFALSE,Bool_t kSimulation = kFALSE, Bool_t outputAOD=kFALSE, Bool_t oldAOD=kFALSE)
+AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString inputDataType, TString calorimeter, Bool_t kPrintSettings = kFALSE,Bool_t kSimulation = kFALSE, Bool_t outputAOD=kFALSE, Bool_t oldAOD=kFALSE)
 {
   // Creates a PartCorr task, configures it and adds it to the analysis manager.
   
@@ -9,24 +9,11 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
     ::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 = "AOD";
-  if(!data.Contains("delta"))
-    inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
-  //cout<<"DATA TYPE :: "<<inputDataType<<endl;
-  // inputDataType: data managed by the input handler
-  // data: can be same as one managed by input handler, or the output AOD created by the filter. By default use AOD
-  
   Bool_t kUseKinematics = kFALSE; 
   if(kSimulation) { 
     kUseKinematics = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE; 
-    if (!kUseKinematics && data=="AOD" && inputDataType != "ESD") kUseKinematics = kTRUE; //AOD primary should be available ... 
+    if (!kUseKinematics && inputDataType == "AOD") kUseKinematics = kTRUE; //AOD primary should be available ... 
   } 
   
   cout<<"********* ACCESS KINE? "<<kUseKinematics<<endl;
@@ -35,25 +22,27 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   //===========================================================================
   
   // *** Reader ***
-  AliCaloTrackReader * reader = ;
-  if(data.Contains("AOD")) reader = new AliCaloTrackAODReader();
-  else if(data=="ESD") reader = new AliCaloTrackESDReader();
-  else if(data=="MC" && inputDataType == "ESD") reader = new AliCaloTrackMCReader();
+  AliCaloTrackReader * reader =0x0 ;
+  if(inputDataType.Contains("AOD")) reader = new AliCaloTrackAODReader();
+  else if(inputDataType=="ESD") reader = new AliCaloTrackESDReader();
+  else if(inputDataType=="MC" && inputDataType == "ESD") reader = new AliCaloTrackMCReader();
   reader->SetDebug(-1);//10 for lots of messages
   reader->SwitchOnCTS();
   //reader->SetDeltaAODFileName("");
   //if(!kSimulation) reader->SetFiredTriggerClassName("CINT1B-ABCE-NOPF-ALL");
   if(calorimeter == "EMCAL") {
     reader->SwitchOnEMCALCells();  
-    reader->SwitchOnEMCAL();
+    reader->SwitchOnEMCAL(); 
   }
   if(calorimeter == "PHOS") { 
     reader->SwitchOnPHOSCells();  
     reader->SwitchOnPHOS();
   }
   
-  // for case data="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
-  if(data.Contains("delta")){
+   reader->SwitchOnSuspiciousClustersRemoval();  //EMCAL
+
+  // for case inputDataType="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
+  if(inputDataType.Contains("delta")){
     reader->SwitchOffEMCAL();
     reader->SwitchOffPHOS();
     reader->SwitchOffEMCALCells(); 
@@ -71,10 +60,12 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
     }
   }
   
+  reader->SetZvertexCut(10.);
+  
   //Min particle pT
-  reader->SetEMCALPtMin(0.1); 
-  reader->SetPHOSPtMin(0.);
-  reader->SetCTSPtMin(0.);
+  reader->SetEMCALPtMin(0.3); 
+  reader->SetPHOSPtMin(0.3);
+  reader->SetCTSPtMin(0.1);
   if(outputAOD)  reader->SwitchOnWriteDeltaAOD()  ;
   if(oldAOD) reader->SwitchOnOldAODs();
   if(kPrintSettings) reader->Print("");
@@ -84,7 +75,6 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   // Remove clusters close to borders, at least max energy cell is 1 cell away 
   cu->SetNumberOfCellsFromEMCALBorder(1);
   cu->SetNumberOfCellsFromPHOSBorder(2);
-  cu->SwitchOnNoFiducialBorderInEMCALEta0();
   
   // Remove EMCAL hottest channels for first LHC10 periods     
   cu->SwitchOnBadChannelsRemoval();
@@ -128,16 +118,21 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   
   AliAnaPhoton *anaphoton = new AliAnaPhoton();
   anaphoton->SetDebug(-1); //10 for lots of messages
+  //settings for different multiplicity analysis
+  anaphoton->SwitchOffEventSelection() ;
+  anaphoton->SetMultiplicity(80, 120);
+
   if(calorimeter == "PHOS"){
-    anaphoton->SetNCellCut(0);// At least 2 cells
-    anaphoton->SetMinPt(0.);
+    anaphoton->SetNCellCut(2);// At least 3 cells
+    anaphoton->SetMinPt(0.3);
     anaphoton->SetMinDistanceToBadChannel(2, 4, 5);
   }
   else {//EMCAL
-    //anaphoton->SetNCellCut(0);// At least 2 cells
-    anaphoton->SetMinPt(0.1); // no effect minium EMCAL cut.
-    if(!kUseKinematics) anaphoton->SetTimeCut(400,900);// Time window of [400-900] ns
-    anaphoton->SetMinDistanceToBadChannel(6, 12, 18);
+    anaphoton->SetNCellCut(1);// At least 2 cells
+    anaphoton->SetMinPt(0.3); 
+    //if(!kUseKinematics) anaphoton->SetTimeCut(400,900);// Time window of [400-900] ns
+    //anaphoton->SetMinDistanceToBadChannel(6, 12, 18);
+    anaphoton->SetMinDistanceToBadChannel(1, 2, 3);//For new releases.
   }
   anaphoton->SetCalorimeter(calorimeter);
   if(kUseKinematics) anaphoton->SwitchOnDataMC() ;//Access MC stack and fill more histograms
@@ -154,7 +149,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
     fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
   }
   
-  if(!data.Contains("delta")) {
+  if(!inputDataType.Contains("delta")) {
     anaphoton->SetOutputAODName(Form("Photons%s",calorimeter.Data()));
     anaphoton->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
   }
@@ -183,24 +178,25 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
     fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
     fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
     fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
-  }  
-       
-  anapi0->SetNPID(1); //Available from tag AliRoot::v4-18-15-AN
+  }    
+
   //settings for pp collision
   anapi0->SwitchOnOwnMix();
+  anapi0->SwitchOnEventSelection() ;
   anapi0->SetNCentrBin(1);
-  anapi0->SetNZvertBin(1);
-  anapi0->SetNRPBin(1);
-  anapi0->SetNMaxEvMix(10);
+  //anapi0->SetMultiplicity(80, 120);
+  anapi0->SetMultiBin(1);  
   if(kUseKinematics)anapi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
   else anapi0->SwitchOffDataMC() ;
   if(calorimeter=="PHOS") anapi0->SetNumberOfModules(3); //PHOS first year
   else  anapi0->SetNumberOfModules(4); //EMCAL first year
-  anapi0->SetHistoPtRangeAndNBins(0, 50, 200) ;
+  anapi0->SetHistoPtRangeAndNBins(0, 20, 200) ;
   //anapi0->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
   //anapi0->SetHistoEtaRangeAndNBins(-0.8, 0.8, 200) ;
-  anapi0->SetHistoMassRangeAndNBins(0., 0.6, 200) ;
-  anapi0->SetHistoAsymmetryRangeAndNBins(0., 1. , 10) ;
+  anapi0->SetHistoMassRangeAndNBins(0., 0.9, 300) ;
+  anapi0->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
+  anapi0->SetHistoTrackMultiplicityRangeAndNBins(0, 200, 20); 
+
   if(kPrintSettings) anapi0->Print("");
        
   //---------------------------  
@@ -208,12 +204,15 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   //---------------------------  
   
   AliAnaPi0EbE *anapi0ebe = new AliAnaPi0EbE();
+  anapi0ebe->SwitchOffEventSelection() ;
+  anapi0ebe->SetMultiplicity(80, 120);
+  anapi0ebe->SetMultiBin(1);  
   anapi0ebe->SetDebug(-1);//10 for lots of messages
   anapi0ebe->SetAnalysisType(AliAnaPi0EbE::kIMCalo);
   anapi0ebe->SetMinPt(0);
   anapi0ebe->SetCalorimeter(calorimeter);
   anapi0ebe->SetInputAODName(Form("Photons%s",calorimeter.Data()));
-  if(!data.Contains("delta")) {
+  if(!inputDataType.Contains("delta")) {
     anapi0ebe->SetOutputAODName(Form("Pi0s%s",calorimeter.Data()));
     anapi0ebe->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
   }
@@ -266,24 +265,24 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   if(kPrintSettings)   anaomegaToPi0Gamma->Print("");
        
        
-  //---------------------------------------------------------------------
-  // Electron/btag
-  //---------------------------------------------------------------------
-  if(calorimeter=="EMCAL"){
-    
-    AliAnaBtag *anabtag = new AliAnaBtag();
-    anabtag->SetDebug(-1); //10 for lots of messages
-    if(kUseKinematics){
-      anabtag->SwitchOnDataMC();
-      anabtag->SetMinPt(1.);
-    }
-    anabtag->SetOutputAODName("ElectronsEMCAL");
-    anabtag->SetOutputAODClassName("AliAODPWG4Particle");
-    //anabtag->SetHistoPtRangeAndNBins(0, 100, 100) ;
-    //anabtag->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
-    //anabtag->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
-    if(kPrintSettings)anabtag->Print("");
-  }
+//  //---------------------------------------------------------------------
+//  // Electron/btag
+//  //---------------------------------------------------------------------
+//  if(calorimeter=="EMCAL"){
+//    
+//    AliAnaBtag *anabtag = new AliAnaBtag();
+//    anabtag->SetDebug(-1); //10 for lots of messages
+//    if(kUseKinematics){
+//      anabtag->SwitchOnDataMC();
+//      anabtag->SetMinPt(1.);
+//    }
+//    anabtag->SetOutputAODName("ElectronsEMCAL");
+//    anabtag->SetOutputAODClassName("AliAODPWG4Particle");
+//    //anabtag->SetHistoPtRangeAndNBins(0, 100, 100) ;
+//    //anabtag->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
+//    //anabtag->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
+//    if(kPrintSettings)anabtag->Print("");
+//  }
   
   //==================================
   // ### Isolation analysis ###        
@@ -302,9 +301,11 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   //Do isolation cut
   AliIsolationCut * ic =  anaisol->GetIsolationCut();  
   ic->SetConeSize(0.4);
-  ic->SetPtThreshold(0.2);
+  ic->SetPtThreshold(0.7);
+  ic->SetPtFraction(0.1);
+  ic->SetSumPtThreshold(1.0) ;
   ic->SetParticleTypeInCone(AliIsolationCut::kOnlyCharged);
-  ic->SetICMethod(AliIsolationCut::kPtThresIC);
+  ic->SetICMethod(AliIsolationCut::kSumPtFracIC);
   if(kPrintSettings) ic->Print("");
   
   //Do or not do isolation with previously produced AODs.
@@ -334,8 +335,11 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   //Do isolation cut
   AliIsolationCut * ic2 =  anaisolpi0->GetIsolationCut();      
   ic2->SetConeSize(0.4);
-  ic2->SetPtThreshold(0.2);
-  ic2->SetICMethod(AliIsolationCut::kPtThresIC);
+  ic2->SetPtThreshold(0.7);
+  ic2->SetPtFraction(0.1);
+  ic2->SetSumPtThreshold(1.0) ;
+  ic2->SetICMethod(AliIsolationCut::kSumPtFracIC);
+  ic2->SetParticleTypeInCone(AliIsolationCut::kOnlyCharged);
   if(kPrintSettings) ic2->Print("");
   //Do or not do isolation with previously produced AODs.
   //No effect if use of SwitchOnSeveralIsolation()
@@ -376,7 +380,20 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   anacorrhadron->SetAODObjArrayName("PhotonHadronCorr"); 
   anacorrhadron->SetDebug(-1);
   anacorrhadron->SwitchOffCaloPID();
-  anacorrhadron->SwitchOffFiducialCut();
+  if(kSimulation){
+    anacorrhadron->SwitchOnFiducialCut();
+    AliFiducialCut * fidCut1stYear = anacorrhadron->GetFiducialCut();
+    fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
+    fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
+    fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
+    fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
+    fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
+    fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);    
+  }
+  anacorrhadron->SwitchOnDecayCorr();
+  anacorrhadron->SetMultiBin(1);
+  anacorrhadron->SwitchOffNeutralCorr();
+  anacorrhadron->SwitchOffEventSelection();
   anacorrhadron->SetPtCutRange(0.1,100);
   anacorrhadron->SetDeltaPhiCutRange(1.5,4.5);
   anacorrhadron->SwitchOnSeveralUECalculation();
@@ -402,7 +419,20 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   anacorrisohadron->SetAODObjArrayName("IsoPhotonHadronCorr"); 
   anacorrisohadron->SetDebug(-1);
   anacorrisohadron->SwitchOffCaloPID();
-  anacorrisohadron->SwitchOffFiducialCut();
+    if(kSimulation){
+    anacorrisohadron->SwitchOnFiducialCut();
+    AliFiducialCut * fidCut1stYear = anacorrisohadron->GetFiducialCut();
+    fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
+    fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
+    fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
+    fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
+    fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
+    fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);    
+  }
+  anacorrisohadron->SwitchOnDecayCorr();
+  anacorrisohadron->SetMultiBin(1);
+  anacorrisohadron->SwitchOffNeutralCorr();
+  anacorrisohadron->SwitchOffEventSelection();
   anacorrisohadron->SetPtCutRange(0.1,100);
   anacorrisohadron->SetDeltaPhiCutRange(1.5,4.5);
   anacorrisohadron->SwitchOnSeveralUECalculation();
@@ -429,7 +459,20 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   anacorrhadronpi0->SetAODObjArrayName("Pi0HadronCorr"); 
   anacorrhadronpi0->SetDebug(-1);
   anacorrhadronpi0->SwitchOffCaloPID();
-  anacorrhadronpi0->SwitchOffFiducialCut();
+  if(kSimulation){
+    anacorrhadronpi0->SwitchOnFiducialCut();
+    AliFiducialCut * fidCut1stYear = anacorrhadronpi0->GetFiducialCut();
+    fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
+    fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
+    fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
+    fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
+    fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
+    fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);    
+  }
+  anacorrhadronpi0->SwitchOnDecayCorr();
+  anacorrhadronpi0->SetMultiBin(1);
+  anacorrhadronpi0->SwitchOffNeutralCorr();
+  anacorrhadronpi0->SwitchOffEventSelection();
   anacorrhadronpi0->SetPtCutRange(0.1,100);
   anacorrhadronpi0->SetDeltaPhiCutRange(1.5,4.5);
   anacorrhadronpi0->SelectIsolated(kFALSE); // do correlation with non isolated pi0
@@ -455,7 +498,20 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   anacorrhadronisopi0->SetAODObjArrayName("IsoPi0HadronCorr"); 
   anacorrhadronisopi0->SetDebug(-1);
   anacorrhadronisopi0->SwitchOffCaloPID();
-  anacorrhadronisopi0->SwitchOffFiducialCut();
+    if(kSimulation){
+    anacorrhadronisopi0->SwitchOnFiducialCut();
+    AliFiducialCut * fidCut1stYear = anacorrhadronisopi0->GetFiducialCut();
+    fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
+    fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
+    fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
+    fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
+    fidCut1stYear->DoCTSFiducialCut(kTRUE) ;
+    fidCut1stYear->SetSimpleCTSFiducialCut(0.8,0.,360.);    
+  }
+  anacorrhadronisopi0->SwitchOnDecayCorr();
+  anacorrhadronisopi0->SetMultiBin(1);
+  anacorrhadronisopi0->SwitchOffNeutralCorr();
+  anacorrhadronisopi0->SwitchOffEventSelection();
   anacorrhadronisopi0->SetPtCutRange(0.1,100);
   anacorrhadronisopi0->SetDeltaPhiCutRange(1.5,4.5);
   anacorrhadronisopi0->SelectIsolated(kTRUE); // do correlation with isolated pi0
@@ -485,19 +541,19 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   maker->AddAnalysis(anapi0,n++);
   maker->AddAnalysis(anapi0ebe,n++);
   maker->AddAnalysis(anaomegaToPi0Gamma,n++);  
-  if(calorimeter=="EMCAL")maker->AddAnalysis(anabtag,n++);   
+  //if(calorimeter=="EMCAL")maker->AddAnalysis(anabtag,n++);   
   // Isolation analysis
   maker->AddAnalysis(anaisol,n++);
   maker->AddAnalysis(anaisolpi0,n++);
   // Correlation analysis
-  maker->AddAnalysis(anacorrjet,n++);
-  maker->AddAnalysis(anacorrhadron,n++);
-  maker->AddAnalysis(anacorrhadronpi0,n++);
-  maker->AddAnalysis(anacorrisohadron,n++);
-  maker->AddAnalysis(anacorrhadronisopi0,n);
-  maker->SetAnaDebug(-1)  ;
+  //maker->AddAnalysis(anacorrjet,n++);
+  //maker->AddAnalysis(anacorrhadron,n++);
+  //maker->AddAnalysis(anacorrhadronpi0,n++);
+  //maker->AddAnalysis(anacorrisohadron,n++);
+  //maker->AddAnalysis(anacorrhadronisopi0,n);
+  maker->SetAnaDebug(0)  ;
   maker->SwitchOnHistogramsMaker()  ;
-  if(data.Contains("delta")) maker->SwitchOffAODsMaker()  ;
+  if(inputDataType.Contains("delta")) maker->SwitchOffAODsMaker()  ;
   else                       maker->SwitchOnAODsMaker()  ;
        
   if(kPrintSettings) maker->Print("");
@@ -511,9 +567,8 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   AliAnalysisTaskParticleCorrelation * task = new AliAnalysisTaskParticleCorrelation (Form("PartCorr%s",calorimeter.Data()));
   task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
   //task->SetDebugLevel(-1);
-  task->SelectCollisionCandidates();
   task->SetAnalysisMaker(maker);
-  //if(!kSimulation)task->SelectCollisionCandidates(); //AliPhysicsSelection has to be attached before.
+  if(inputDataType=="ESD" && !kSimulation) task->SelectCollisionCandidates(); //AliPhysicsSelection has to be attached before.
   mgr->AddTask(task);
   
   //Create containers
@@ -538,7 +593,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori
   //==============================================================================
   mgr->ConnectInput  (task, 0, mgr->GetCommonInputContainer());
   // AOD output slot will be used in a different way in future
-  if(!data.Contains("delta")   && outputAOD) mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
+  if(!inputDataType.Contains("delta")   && outputAOD) mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
   mgr->ConnectOutput (task, 1, cout_pc);
   mgr->ConnectOutput (task, 2, cout_cuts);