]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
AddTaskPartCorr.C : Add new analysis cases, move common histograms settings to a...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 6 Nov 2011 23:15:52 +0000 (23:15 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 6 Nov 2011 23:15:52 +0000 (23:15 +0000)
ana.C: Prepare configuration for LHC11d analysis EMCAL data

CaloCalib macros: fix some mistakes

PWG4/CaloCalib/macros/AddTaskEMCALClusterize.C
PWG4/CaloCalib/macros/ConfigureEMCALRecoUtils.C
PWG4/macros/AddTaskPartCorr.C
PWG4/macros/ana.C

index 65f75f88b33cd27ab0722e35623f7a0c5ffc9680..90d7c0904c81cf1eeb11fed939e839302402487d 100644 (file)
@@ -135,7 +135,7 @@ AliAnalysisTaskEMCALClusterize* AddTaskEMCALClusterize(
     printf("AliAnalysisTaskEMCALClusterize ---Data with kINT7 Trigger and clusterizer %s\n",name.Data());
     clusterize->SelectCollisionCandidates(AliVEvent::kINT7);
   }
-  if(trigger=="EMC1"){
+  else if(trigger=="EMC1"){
     printf("AliAnalysisTaskEMCALClusterize ---Data with kEMC1 Trigger and clusterizer %s\n",name.Data());
     clusterize->SelectCollisionCandidates(AliVEvent::kEMC1);
   }
index 61ecbbb5f6acaa44fa867683abed2423cb5c15ab..0aca5dcc357a8f36006021f9d8baedd97f80d457 100644 (file)
@@ -114,6 +114,7 @@ void ConfigureEMCALRecoUtils(
         }else printf("AliEMCALRecoUtils ---Do NOT recalibrate 1\n");
       }else printf("AliEMCALRecoUtils ---Do NOT recalibrate 2\n");
     }else printf("AliEMCALRecoUtils ---Do NOT recalibrate 3\n");
+    
     //TFile * f = new TFile("RecalibrationFactors.root","read");
     //for(Int_t i =0; i< 10; i++)  reco->SetEMCALChannelRecalibrationFactors( i, (TH2F*) f->Get(Form("EMCALRecalFactors_SM%d",i)));                                                                     
     // //  reco->SwitchOnTimeDepCorrection();
@@ -197,7 +198,7 @@ void ConfigureEMCALRecoUtils(
   else if(run <  140000 && run > 136850)
     ftime = TFile::Open(Form("%s/RefLHC10hpass2PbPb2.76TeV.root",path.Data()));
   else if(run < 136850)
-    ftime = TFile::Open(Form("%s/RefLHC10dpass2-7TeV",path.Data()));
+    ftime = TFile::Open(Form("%s/RefLHC10dpass2-7TeV.root",path.Data()));
   else printf("Run %d, not considered for time calibration\n",run);
   
   if(ftime){
index 5a6ef668c76d858afb24e3b9c678bfac36db3cd6..e57d79e62316b58242105e38074c5974750c7442 100644 (file)
@@ -1,33 +1,34 @@
-Bool_t  kPrint = kFALSE;
+
+Bool_t  kPrint         = kFALSE;
 Bool_t  kSimulation    = kFALSE;
 Bool_t  kUseKinematics = kFALSE;
 Bool_t  kOutputAOD     = kFALSE;
 Int_t   kRunNumber     = 0;
 Int_t   kYears         = 2011;
-TString kCollisions     = "pp";
-TString kTrig          ="EMC7" ;
+TString kCollisions    = "pp";
+TString kTrig          = "EMC7" ;
 TString kClusterArray  = "";
 TString kData          = "ESD";
 TString kInputDataType = "ESD";
 TString kCalorimeter   = "EMCAL";
 
 AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(
-                                            const TString data          = "AOD",
-                                            const TString calorimeter   = "EMCAL", 
-                                            const Bool_t  printSettings = kFALSE,
-                                            const Bool_t  simulation    = kFALSE,
-                                            const Bool_t  outputAOD     = kFALSE, 
-                                            const TString outputfile    = "",
-                                            const Int_t   year          = 2010,
-                                            const Int_t   run           = 0,
-                                            const TString col           = "pp", 
-                                            const TString trigger       = "MB", 
-                                            const TString clustersArray = "V1" 
-                                            )
+                                                    const TString data          = "AOD",
+                                                    const TString calorimeter   = "EMCAL", 
+                                                    const Bool_t  printSettings = kFALSE,
+                                                    const Bool_t  simulation    = kFALSE,
+                                                    const Bool_t  outputAOD     = kFALSE, 
+                                                    const TString outputfile    = "",
+                                                    const Int_t   year          = 2010,
+                                                    const Int_t   run           = 0,
+                                                    const TString col           = "pp", 
+                                                    const TString trigger       = "MB", 
+                                                    const TString clustersArray = "V1" 
+                                                    )
 {
   // Creates a PartCorr task, configures it and adds it to the analysis manager.
   
-  kPrint = printSettings;
+  kPrint         = printSettings;
   kSimulation    = simulation;
   kRunNumber     = run;
   kYears         = year;
@@ -65,7 +66,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(
   cout<<"********* ACCESS KINE? "<<kUseKinematics<<endl;
   
   // #### Configure analysis ####
-  
+    
   AliAnaPartCorrMaker * maker = new AliAnaPartCorrMaker();
   
   // General frame setting and configuration
@@ -75,23 +76,38 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(
   // Analysis tasks setting and configuration
   Int_t n = 0;//Analysis number, order is important
   
-  maker->AddAnalysis(ConfigureQAAnalysis()         , n++); // QA analysis (careful, if no tender used, cells are not updated or corrected, clusters OK)
-  maker->AddAnalysis(ConfigurePhotonAnalysis()     , n++); // Photon cluster selection
-  maker->AddAnalysis(ConfigurePi0Analysis()        , n++); // Pi0 invariant mass analysis
-  
-  maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kIMCalo)      , n++); // Pi0 event by event selection, and photon tagging from decay
-  maker->AddAnalysis(ConfigurePi0EbEAnalysis("Eta", AliAnaPi0EbE::kIMCalo)      , n++); // Eta event by event selection, and photon tagging from decay
-
-  //maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kIMCaloTracks), n++); // Pi0 (calo+conversion) event by event selection, 
-  // and photon tagging from decay, need to execute at the same time conversions analysis
+  maker->AddAnalysis(ConfigureQAAnalysis()    , n++);  
 
-  maker->AddAnalysis(ConfigureIsolationAnalysis("Photon"), n++);   // Photon isolation
-  maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0")   , n++); // Pi0 isolation
+  // Isolation settings
+  Int_t partInCone = AliIsolationCut::kOnlyCharged;
+  Int_t thresType  = AliIsolationCut::kPtThresIC;
   
-  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",kFALSE), n++);   // Gamma hadron correlation
-  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",kTRUE) , n++);   // Isolated gamma hadron correlation
-  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0",kFALSE)   , n++); // Pi0 hadron correlation
-  maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0",kTRUE)    , n++); // Isolated pi0 hadron correlation
+  if(kClusterArray!=""){
+    
+    maker->AddAnalysis(ConfigurePhotonAnalysis(), n++); // Photon cluster selection
+    maker->AddAnalysis(ConfigurePi0Analysis()   , n++); // Pi0 invariant mass analysis
+    maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kIMCalo), n++); // Pi0 event by event selection, and photon tagging from decay
+    maker->AddAnalysis(ConfigurePi0EbEAnalysis("Eta", AliAnaPi0EbE::kIMCalo), n++); // Eta event by event selection, and photon tagging from decay
+    
+    //maker->AddAnalysis(ConfigurePi0EbEAnalysis("Pi0", AliAnaPi0EbE::kIMCaloTracks), n++); // Pi0 (calo+conversion) event by event selection, 
+    // and photon tagging from decay, need to execute at the same time conversions analysis
+    
+    maker->AddAnalysis(ConfigureIsolationAnalysis("Photon",partInCone,thresType), n++); // Photon isolation
+    maker->AddAnalysis(ConfigureIsolationAnalysis("Pi0",   partInCone,thresType), n++); // Pi0 isolation
+    
+    maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",kFALSE), n++); // Gamma hadron correlation
+    maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Photon",kTRUE) , n++); // Isolated gamma hadron correlation
+    maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0"   ,kFALSE), n++); // Pi0 hadron correlation
+    maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Pi0"   ,kTRUE) , n++); // Isolated pi0 hadron correlation
+  }
+  else  
+  {
+    //Trigger on tracks, do only once, tracks do not depend on clusterizer
+    maker->AddAnalysis(ConfigureChargedAnalysis(), n++);                                // track selection
+    maker->AddAnalysis(ConfigureIsolationAnalysis("Hadron",partInCone,thresType), n++); // track isolation
+    maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Hadron",kFALSE), n++);       // track-track correlation
+    maker->AddAnalysis(ConfigureHadronCorrelationAnalysis("Hadron",kTRUE) , n++);       // Isolated track-track correlation
+  }  
   
   maker->SetAnaDebug(-1)  ;
   maker->SwitchOnHistogramsMaker()  ;
@@ -100,7 +116,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(
        
   if(kPrint) maker->Print("");
   
-  printf("<< End Configuration of analysis %d for calorimeter %s >>\n",n, kCalorimeter.Data());
+  printf("<< End Configuration of %d analysis for calorimeter %s >>\n",n, kCalorimeter.Data());
   
   // Create task
   
@@ -140,7 +156,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(
     printf("PartCorr trigger INT7\n");
     task->SelectCollisionCandidates(AliVEvent::kINT7);
   }
-  if(kTrig=="EMC1"){
+  else if(kTrig=="EMC1"){
     printf("PartCorr trigger EMC1\n");
     task->SelectCollisionCandidates(AliVEvent::kEMC1);
   }
@@ -148,6 +164,10 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(
     printf("PartCorr trigger MB\n");
     task->SelectCollisionCandidates(AliVEvent::kMB);
   }  
+  else if(kTrig=="PHOS"){
+    printf("PartCorr trigger PHOS\n");
+    task->SelectCollisionCandidates(AliVEvent::kPHI7);
+  }
   
   return task;
 }
@@ -164,38 +184,62 @@ AliCaloTrackReader * ConfigureReader()
   
   reader->SetDebug(-1);//10 for lots of messages
   
+  //Delta AOD?
+  //reader->SetDeltaAODFileName("");
+  if(kOutputAOD) reader->SwitchOnWriteDeltaAOD()  ;
+  
+  // MC settings
+  if(kUseKinematics){
+    if(kInputDataType == "ESD"){
+      reader->SwitchOnStack();          
+      reader->SwitchOffAODMCParticles(); 
+    }
+    else if(kInputDataType == "AOD"){
+      reader->SwitchOffStack();          
+      reader->SwitchOnAODMCParticles(); 
+    }
+  }  
+  
+  //------------------------
+  // Detector input filling
+  //------------------------
+  
+  //Min cluster/track E
+  reader->SetEMCALEMin(0.5); 
+  reader->SetEMCALEMax(1000); 
+  reader->SetPHOSEMin(0.3);
+  reader->SetPHOSEMax(1000);
+  reader->SetCTSPtMin(0.1);
+  reader->SetCTSPtMax(1000);
+  
+  reader->SwitchOffFiducialCut();
+  
+  // Tracks
+  reader->SwitchOnCTS();
+  gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/CreateTrackCutsPWG4.C"); 
+  AliESDtrackCuts * esdTrackCuts = CreateTrackCutsPWG4(10011004); 
+  reader->SetTrackCuts(esdTrackCuts);
+  
+  // Calorimeter
+  
   reader->SetEMCALClusterListName(kClusterArray);
   if(kClusterArray == "") {
     printf("**************** Normal analysis **************** \n");
-    //reader->SwitchOnClusterRecalculation();
+    reader->SwitchOnClusterRecalculation();
   }
   else {
     printf("**************** Input for analysis is Clusterizer %s **************** \n", kClusterArray.Data());
-    //reader->SwitchOffClusterRecalculation();
-  }
-  
-  // Settings for LHC11a
-  if(kRunNumber > 140000 && kRunNumber < = 146860){
-    if(kClusterArray == "") reader->SwitchOnLEDEventsRemoval();
-    reader->RejectFastClusterEvents();
-    printf("Reader: Reject LED events and Fast cluster\n");
-  }
-  
-  //reader->SetDeltaAODFileName("");
-  //if(!kSimulation) reader->SetFiredTriggerClassName("CINT1B-ABCE-NOPF-ALL");
-  
-  // Detector input filling
-  
-  reader->SwitchOnCTS();
+    reader->SwitchOffClusterRecalculation();
+  }  
   
-  if(kCalorimeter == "EMCAL") {
+  //if(kCalorimeter == "EMCAL") {
     reader->SwitchOnEMCALCells();  
     reader->SwitchOnEMCAL();
-  }
-  if(kCalorimeter == "PHOS") { 
+  //}
+  //if(kCalorimeter == "PHOS") { 
     reader->SwitchOnPHOSCells();  
     reader->SwitchOnPHOS();
-  }
+  //}
   
   // for case data="deltaAOD", no need to fill the EMCAL/PHOS cluster lists
   if(kData.Contains("delta")){
@@ -205,39 +249,41 @@ AliCaloTrackReader * ConfigureReader()
     reader->SwitchOffPHOSCells(); 
   }
   
-  if(kUseKinematics){
-    if(kInputDataType == "ESD"){
-      reader->SwitchOnStack();          
-      reader->SwitchOffAODMCParticles(); 
-    }
-    else if(kInputDataType == "AOD"){
-      reader->SwitchOffStack();          
-      reader->SwitchOnAODMCParticles(); 
-    }
-  }
+  //-----------------
+  // Event selection
+  //-----------------
+  
+  // Settings for LHC11a
+  if(kRunNumber > 140000 && kRunNumber < = 146860){
+    if(kClusterArray == "") reader->SwitchOnLEDEventsRemoval();
+    reader->RejectFastClusterEvents();
+    printf("Reader: Reject LED events and Fast cluster\n");
+  }  
+  
+  //if(!kUseKinematics) reader->SetFiredTriggerClassName("CEMC7EGA-B-NOPF-CENTNOTRD"); // L1 Gamma
   
-  //Event selection
   if     (kCollisions=="pp"  ) {
     if(kRunNumber < 140000) reader->SwitchOnEventSelection(); // remove pileup by default
+    else                    reader->SwitchOffEventSelection(); 
     reader->SwitchOffV0ANDSelection() ;        // and besides v0 AND
     reader->SwitchOffPrimaryVertexSelection(); // and besides primary vertex
+    reader->SetZvertexCut(50.);                // Open cut
   }
   else if(kCollisions=="PbPb") {
     reader->SwitchOffEventSelection();         // remove pileup by default
     reader->SwitchOffV0ANDSelection() ;        // and besides v0 AND
     reader->SwitchOffPrimaryVertexSelection(); // and besides primary vertex
+    reader->SetZvertexCut(10.);                // Centrality defined in this range.
+    
+    // Centrality
+    reader->SetCentralityClass("V0M");
+    reader->SetCentralityOpt("10");  // 10 centrality bins
+    reader->SetCentralityBin(-1,-1); // Accept all events, if not select range
+    
+    // Event plane (only used in AliAnaPi0 for the moment)
+    reader->SetEventPlaneMethod("Q");
   }
   
-  if     (kCollisions=="pp"  )   reader->SetZvertexCut(50.);  //Open cut
-  else if(kCollisions=="PbPb")   reader->SetZvertexCut(10.);  //Centrality defined in this range.
-  
-  //Min particle pT
-  reader->SetEMCALPtMin(0.5); 
-  reader->SetEMCALPtMax(1000); 
-  reader->SetPHOSPtMin(0.3);
-  reader->SetCTSPtMin(0.);
-  
-  if(kOutputAOD)     reader->SwitchOnWriteDeltaAOD()  ;
   if(kPrint) reader->Print("");
   
   return reader;
@@ -249,9 +295,10 @@ AliCalorimeterUtils* ConfigureCaloUtils()
 {
   
   AliCalorimeterUtils *cu = new AliCalorimeterUtils;
+  cu->SetDebug(-1);
   
   if(kYears==2010) cu->SetEMCALGeometryName("EMCAL_FIRSTYEARV1");
-  else            cu->SetEMCALGeometryName("EMCAL_COMPLETEV1");
+  else             cu->SetEMCALGeometryName("EMCAL_COMPLETEV1");
   
   // Remove clusters close to borders, at least max energy cell is 1 cell away 
   cu->SetNumberOfCellsFromEMCALBorder(1);
@@ -263,18 +310,29 @@ AliCalorimeterUtils* ConfigureCaloUtils()
     cu->SwitchOnRecalculateClusterTrackMatching();
   
   //EMCAL only settings
-  AliEMCALRecoUtils * reco = cu->GetEMCALRecoUtils();
-  
-  if(kCollisions=="pp"  ) {
+  AliEMCALRecoUtils * recou = cu->GetEMCALRecoUtils();
+  
+  TGeoHMatrix* matrix[10];
+  gROOT->LoadMacro("ConfigureEMCALRecoUtils.C");
+  ConfigureEMCALRecoUtils(
+                          recou,
+                          kSimulation, 
+                          matrix,
+                          "",//AODB path, default
+                          kRunNumber, 
+                          kPass
+                          );   
+  
+  if(kCollisions=="pp"  ) { // Do only for pp for the moment
     cu->SwitchOnCorrectClusterLinearity();
-    if(!kSimulation) reco->SetNonLinearityFunction(AliEMCALRecoUtils::kBeamTestCorrected);
-    else             reco->SetNonLinearityFunction(AliEMCALRecoUtils::kPi0MC);
+    if(!kSimulation) recou->SetNonLinearityFunction(AliEMCALRecoUtils::kBeamTestCorrected);
+    else             recou->SetNonLinearityFunction(AliEMCALRecoUtils::kPi0MC);
   }
   
-  if(kClusterArray == "") reco->SwitchOnRejectExoticCluster();
-  else                    reco->SwitchOffRejectExoticCluster();
+  recou->SwitchOnRejectExoticCell();
+  if(kClusterArray == "") recou->SwitchOnRejectExoticCluster();
+  else                    recou->SwitchOffRejectExoticCluster();
   
-  cu->SetDebug(-1);
   if(kPrint) cu->Print("");
   
   return cu;
@@ -287,8 +345,12 @@ AliAnaPhoton* ConfigurePhotonAnalysis()
   
   AliAnaPhoton *anaphoton = new AliAnaPhoton();
   anaphoton->SetDebug(-1); //10 for lots of messages
-  anaphoton->SwitchOnFillShowerShapeHistograms();  
-  anaphoton->SwitchOnTrackMatchRejection() ;
+  
+  // cluster selection cuts
+  
+  anaphoton->SwitchOffFiducialCut();
+  
+  anaphoton->SetCalorimeter(kCalorimeter);
   
   if(kCalorimeter == "PHOS"){
     anaphoton->SetNCellCut(2);// At least 2 cells
@@ -297,40 +359,41 @@ AliAnaPhoton* ConfigurePhotonAnalysis()
   }
   else {//EMCAL
     anaphoton->SetNCellCut(1);// At least 2 cells
-    anaphoton->SetMinPt(0.5); // no effect minium EMCAL cut.
+    anaphoton->SetMinPt(0.5); // avoid mip peak at E = 260 MeV
     anaphoton->SetMaxPt(1000); 
-    //if(!kUseKinematics) anaphoton->SetTimeCut(400,900);// Time window of [400-900] ns
-    anaphoton->SetMinDistanceToBadChannel(1, 2, 3);//For filtered AODs, new releases.
+    if(!kUseKinematics) anaphoton->SetTimeCut(-1000,1000);// Time window of [400-900] ns if time recalibration is off, 
+    // restrict to less than 100 ns when time calibration is on 
+    anaphoton->SetMinDistanceToBadChannel(1, 2, 3); // For filtered AODs, new releases.
   }
   
-  anaphoton->SetCalorimeter(kCalorimeter);
+  anaphoton->SwitchOnTrackMatchRejection() ;
   
-  if(kUseKinematics) anaphoton->SwitchOnDataMC() ;//Access MC stack and fill more histograms
-  else               anaphoton->SwitchOffDataMC() ;
+  //PID cuts (shower shape)
   
-  //PID cut
   AliCaloPID* caloPID = anaphoton->GetCaloPID();
-  caloPID->SetLambda0CutMax(0.4);
-  caloPID->SetLambda0CutMin(0.1);
-  anaphoton->SwitchOnCaloPID();
+  anaphoton->SwitchOnCaloPID(); // if nothing else specified bayesian
   anaphoton->SwitchOnCaloPIDRecalculation(); // off, get bayesian weights, on use simple cut
+  caloPID->SetLambda0CutMax(0.30);
+  caloPID->SetLambda0CutMin(0.10);
+  anaphoton->SwitchOffFillShowerShapeHistograms();  // Filled before photon shower shape selection
   
-  anaphoton->SwitchOffFiducialCut();
+  // Input / output delta AOD settings
   
   if(!kData.Contains("delta")) {
     anaphoton->SetOutputAODName(Form("Photon%s_Trig%s_Cl%s",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data()));
     anaphoton->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
+    //anaphoton->SetOutputAODClassName("AliAODPWG4Particle"); // use if no correlation done
   }
   else anaphoton->SetInputAODName(Form("Photon%s_Trig%s_Cl%s",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data()));
   
+  //Set Histograms name tag, bins and ranges
+  
   anaphoton->AddToHistogramsName("AnaPhoton_");
+  SetHistoRangeAndNBins(anaphoton); // see method below
   
-  //Set Histograms bins and ranges
-  anaphoton->SetHistoPtRangeAndNBins(0, 100, 250) ;
-  if(kYears==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) ;
-  anaphoton->SetHistoShowerShapeRangeAndNBins(0, 1.5, 150);
+  // Number of particle type MC histograms
+  anaphoton->FillNOriginHistograms(8);
+  anaphoton->FillNPrimaryHistograms(4);
   
   if(kPrint) anaphoton->Print("");
   
@@ -338,20 +401,66 @@ AliAnaPhoton* ConfigurePhotonAnalysis()
   
 }
 
+//_______________________________________________
+AliAnaChargedParticles* ConfigureChargedAnalysis()
+{
+  
+  AliAnaChargedParticles *anatrack = new AliAnaChargedParticles();
+  anatrack->SetDebug(-1); //10 for lots of messages
+  
+  // selection cuts
+  
+  anatrack->SetDebug(-1);//10 for lots of messages
+  anatrack->SetMinPt(5.);
+  anatrack->SwitchOffFiducialCut();
+  
+  // Input / output delta AOD settings
+  
+  if(!kData.Contains("delta")) {
+    anatrack->SetOutputAODName(Form("Hadron%s_Trig%s_Cl%s",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data()));
+    anatrack->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
+    //anaphoton->SetOutputAODClassName("AliAODPWG4Particle"); // use if no correlation done
+  }
+  else anatrack->SetInputAODName(Form("Hadron%s_Trig%s_Cl%s",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data()));
+  printf("Set Hadron%s_Trig%s_Cl%s\n",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data());
+  //Set Histograms name tag, bins and ranges
+  
+  anatrack->AddToHistogramsName("AnaHadrons_");
+  SetHistoRangeAndNBins(anatrack); // see method below
+
+  if(kPrint) anatrack->Print("");
+  
+  return anatrack;
+  
+}
+
+
 //_______________________________
 AliAnaPi0* ConfigurePi0Analysis()
 {
   
   AliAnaPi0 *anapi0 = new AliAnaPi0();
+  
   anapi0->SetDebug(-1);//10 for lots of messages
+  if(kPrint) anapi0->Print("");
+  
+  // Input delta AOD settings
   anapi0->SetInputAODName(Form("Photon%s_Trig%s_Cl%s",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data()));
+  
+  // Calorimeter settings
   anapi0->SetCalorimeter(kCalorimeter);
-  anapi0->SwitchOffMultipleCutAnalysis(); 
-  anapi0->SetPairTimeCut(70);
+  if(kCalorimeter=="PHOS") anapi0->SetNumberOfModules(3); //PHOS first year
+  else {                   
+    if(kYears==2010) anapi0->SetNumberOfModules(4); //EMCAL first year
+    else             anapi0->SetNumberOfModules(10);
+  }
   
   //settings for pp collision mixing
   anapi0->SwitchOnOwnMix(); //Off when mixing done with general mixing frame
   
+  // Cuts 
+  if(kCalorimeter=="EMCAL") anapi0->SetPairTimeCut(70);
+  
   if     (kCollisions=="pp"  ) {
     anapi0->SetNCentrBin(1);
     anapi0->SetNZvertBin(10);
@@ -368,27 +477,10 @@ AliAnaPi0* ConfigurePi0Analysis()
     anapi0->SwitchOffSMCombinations();
   }
   
-  if(kUseKinematics)anapi0->SwitchOnDataMC() ;//Access MC stack and fill more histograms
-  else              anapi0->SwitchOffDataMC() ;
-  if(kCalorimeter=="PHOS") anapi0->SetNumberOfModules(3); //PHOS first year
-  else {                   
-    if(kYears==2010) anapi0->SetNumberOfModules(4); //EMCAL first year
-    else            anapi0->SetNumberOfModules(10);
-  }
-  
-  anapi0->SetHistoPtRangeAndNBins(0, 100, 250) ;    
-  anapi0->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
-  if(kYears==2010)anapi0->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
-  else           anapi0->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
+  //Set Histograms name tag, bins and ranges
   
-  anapi0->SetHistoMassRangeAndNBins(0., 1., 200) ;
-  anapi0->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
-  anapi0->SetHistoTrackMultiplicityRangeAndNBins(0, 200, 20); 
-  anapi0->SetHistoShowerShapeRangeAndNBins(0, 3, 300);
-  anapi0->SetHistoTimeRangeAndNBins(-200.,200,800);
-  anapi0->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
-  
-  if(kPrint) anapi0->Print("");
+  anapi0->AddToHistogramsName("AnaPi0_");
+  SetHistoRangeAndNBins(anapi0); // see method below
   
   return anapi0;
   
@@ -401,7 +493,7 @@ AliAnaPi0EbE* ConfigurePi0EbEAnalysis(TString particle,
   
   AliAnaPi0EbE *anapi0ebe = new AliAnaPi0EbE();
   anapi0ebe->SetDebug(-1);//10 for lots of messages
-    
+  
   anapi0ebe->SetAnalysisType(analysis);
   TString opt = "";
   if(analysis==AliAnaPi0EbE::kIMCaloTracks) opt = "Conv";
@@ -409,10 +501,11 @@ AliAnaPi0EbE* ConfigurePi0EbEAnalysis(TString particle,
   
   anapi0ebe->SwitchOffFillWeightHistograms();
   anapi0ebe->SetMinPt(0.5);
-  anapi0ebe->SetPairTimeCut(20); 
+  if(kCalorimeter=="EMCAL")anapi0ebe->SetPairTimeCut(20); 
   anapi0ebe->SetCalorimeter(kCalorimeter);
   
-  anapi0ebe->AddToHistogramsName(Form("Ana%s%sEbE_",particle.Data(),opt.Data()));
+  // Input / output delta AOD settings
+  
   anapi0ebe->SetInputAODName(Form("Photon%s_Trig%s_Cl%s",kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data()));
   if(!kInputDataType.Contains("delta")) {
     anapi0ebe->SetOutputAODName(Form("%s%s%s_Trig%s_Cl%s",particle.Data(), opt.Data(), kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data()));
@@ -422,9 +515,6 @@ AliAnaPi0EbE* ConfigurePi0EbEAnalysis(TString particle,
   
   if(analysis == AliAnaPi0EbE::kIMCaloTracks) anapi0ebe->SetInputAODGammaConvName("PhotonsCTS");
   
-  if(kUseKinematics) anapi0ebe->SwitchOnDataMC() ;//Access MC stack and fill more histograms
-  else               anapi0ebe->SwitchOffDataMC() ;  
-  
   if(analysis!=AliAnaPi0EbE::kSSCalo){
     
     AliNeutralMesonSelection *nms = anapi0ebe->GetNeutralMesonSelection();
@@ -436,16 +526,10 @@ AliAnaPi0EbE* ConfigurePi0EbEAnalysis(TString particle,
     //nms->SetHistoIMRangeAndNBins(0, 1, 400);
   }
   
-  //Set Histrograms bins and ranges
-  if(kCalorimeter=="EMCAL" ){
-    anapi0ebe->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
-    if(kYears==2010)anapi0ebe->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
-    else            anapi0ebe->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
-    anapi0ebe->SetHistoShowerShapeRangeAndNBins(0, 3, 300);
-  } 
+  //Set Histograms name tag, bins and ranges
   
-  anapi0ebe->SetHistoTimeRangeAndNBins(-200.,200,800);
-  anapi0ebe->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
+  anapi0ebe->AddToHistogramsName(Form("Ana%s%sEbE_",particle.Data(),opt.Data()));
+  SetHistoRangeAndNBins(anapi0ebe); // see method below
   
   if(kPrint) anapi0ebe->Print("");
   
@@ -454,40 +538,46 @@ AliAnaPi0EbE* ConfigurePi0EbEAnalysis(TString particle,
 }
 
 //___________________________________________________________________
-AliAnaParticleIsolation* ConfigureIsolationAnalysis(TString particle)
+AliAnaParticleIsolation* ConfigureIsolationAnalysis(TString particle="Photon", 
+                                                    Int_t  partInCone = AliIsolationCut::kOnlyCharged,
+                                                    Int_t  thresType  = AliIsolationCut::kSumPtFracIC,
+                                                    Bool_t multi      = kFALSE)
 {
   
   AliAnaParticleIsolation *anaisol = new AliAnaParticleIsolation();
   anaisol->SetDebug(-1);
+  
   anaisol->SetMinPt(5);
+  
+  // Input / output delta AOD settings
+  
   anaisol->SetInputAODName(Form("%s%s_Trig%s_Cl%s",particle.Data(),kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data()));
   anaisol->SetAODObjArrayName(Form("IC%s",particle.Data())); 
   
   anaisol->SetCalorimeter(kCalorimeter);
   
-  if(kUseKinematics) anaisol->SwitchOnDataMC() ;//Access MC stack and fill more histograms
-  else               anaisol->SwitchOffDataMC() ;
-  
-  //Do isolation cut
+  //Do settings for main isolation cut class
   AliIsolationCut * ic =  anaisol->GetIsolationCut();  
   ic->SetConeSize(0.4);
-  ic->SetPtThreshold(0.7);
+  ic->SetPtThreshold(0.5);
   ic->SetPtFraction(0.1);
   ic->SetSumPtThreshold(1.0) ;
-  ic->SetParticleTypeInCone(AliIsolationCut::kOnlyCharged);
-  ic->SetICMethod(AliIsolationCut::kSumPtFracIC);
-  if(kPrint) ic->Print("");
+  ic->SetParticleTypeInCone(partInCone);
+  ic->SetICMethod(thresType);
   
   //Do or not do isolation with previously produced AODs.
   //No effect if use of SwitchOnSeveralIsolation()
   anaisol->SwitchOffReIsolation();
   //Multiple IC
-  anaisol->SwitchOffSeveralIsolation() ;
-  //Set Histograms bins and ranges
-  anaisol->SetHistoPtRangeAndNBins(0, 50, 200) ;
-  //      ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
-  //      ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
+  if(multi) anaisol->SwitchOnSeveralIsolation() ;
+  else      anaisol->SwitchOffSeveralIsolation() ;
+  
+  //Set Histograms name tag, bins and ranges
+  
   anaisol->AddToHistogramsName(Form("AnaIsol%s_",particle.Data()));
+  SetHistoRangeAndNBins(anaisol); // see method below
+  
+  if(kPrint) ic     ->Print("");
   if(kPrint) anaisol->Print("");
   
   return anaisol;
@@ -500,20 +590,15 @@ AliAnaParticleHadronCorrelation* ConfigureHadronCorrelationAnalysis(TString part
 {
   
   AliAnaParticleHadronCorrelation *anacorrhadron = new AliAnaParticleHadronCorrelation();
+  anacorrhadron->SetDebug(-1);
+  
+  anacorrhadron->SetPtCutRange(5,200);
+  
+  // Input / output delta AOD settings
+  
   anacorrhadron->SetInputAODName(Form("%s%s_Trig%s_Cl%s",particle.Data(),kCalorimeter.Data(), kTrig.Data(),kClusterArray.Data()));
   anacorrhadron->AddToHistogramsName(Form("Ana%sHadronCorrIso%d_",particle.Data(),bIsolated));
   anacorrhadron->SetAODObjArrayName(Form("%sHadronCorrIso%d",particle.Data(),bIsolated)); 
-  anacorrhadron->SetDebug(-1);
-  //  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->SelectIsolated(bIsolated); // do correlation with isolated photons
   
@@ -521,22 +606,22 @@ AliAnaParticleHadronCorrelation* ConfigureHadronCorrelationAnalysis(TString part
   anacorrhadron->SetMultiBin(1);
   anacorrhadron->SwitchOffNeutralCorr();
   anacorrhadron->SwitchOffEventSelection();
-  anacorrhadron->SetPtCutRange(0.1,100);
   anacorrhadron->SetDeltaPhiCutRange(1.5,4.5);
+  
   anacorrhadron->SwitchOnSeveralUECalculation();
   anacorrhadron->SetUeDeltaPhiCutRange(TMath::Pi()/3, 2*TMath::Pi()/3);
-  anacorrhadron->SelectIsolated(kFALSE); // do correlation with isolated photons
-  if(kUseKinematics) anacorrhadron->SwitchOnDataMC() ;//Access MC stack and fill more histograms
-  else               anacorrhadron->SwitchOffDataMC() ;
+  
   //if(kCalorimeter=="PHOS"){
   //Correlate with particles in EMCAL
   //anacorrhadron->SwitchOnCaloPID();
-  //anacorrhadron->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
+  //anacorrhadron->SwitchOnCaloPIDRecalculation(); 
   //}
-  //Set Histograms bins and ranges
-  anacorrhadron->SetHistoPtRangeAndNBins(0, 50, 200) ;
-  //      ana->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
-  //      ana->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
+  
+  //Set Histograms name tag, bins and ranges
+  
+  anacorrhadron->AddToHistogramsName(Form("Ana%sHadronCorr_Iso%d_",particle.Data(),bIsolated));
+  SetHistoRangeAndNBins(anacorrhadron); // see method below
+  
   if(kPrint) anacorrhadron->Print("");  
   
   return anacorrhadron;
@@ -551,59 +636,87 @@ AliAnaCalorimeterQA* ConfigureQAAnalysis()
   //anaQA->SetDebug(10); //10 for lots of messages
   anaQA->SetCalorimeter(kCalorimeter);
   
-  if(kSimulation) anaQA->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
-  else            anaQA->SwitchOffDataMC() ;
-  
-  anaQA->AddToHistogramsName("QA_"); //Begining of histograms name
-  
   anaQA->SwitchOffFiducialCut();
-  anaQA->SwitchOnCorrelation();
+  anaQA->SwitchOnCorrelation(); // make sure you switch in the reader PHOS and EMCAL cells and clusters if option is ON
   anaQA->SwitchOffFillAllTH3Histogram();
   anaQA->SwitchOffFillAllPositionHistogram();
   
-  //anaQA->SwitchOnStudyBadClusters() ;
-  //anaQA->SwitchOnStudyClustersAsymmetry();
-  //anaQA->SwitchOnStudyWeight();
+  anaQA->SwitchOnStudyBadClusters() ;
+  anaQA->SwitchOffStudyClustersAsymmetry();
+  anaQA->SwitchOffStudyWeight();
   anaQA->SwitchOffFillAllTrackMatchingHistogram();
   
-  //Set Histrograms bins and ranges
-  anaQA->SetHistoPtRangeAndNBins(0, 100, 200) ;
-  anaQA->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
-  
   if(kCalorimeter=="EMCAL"){
-    anaQA->SetHistoEtaRangeAndNBins(-0.71, 0.71, 200) ;
-    if(kYears==2010){  
+    if(kYears==2010)  
       anaQA->SetNumberOfModules(4); 
-      anaQA->SetHistoPhiRangeAndNBins(79*TMath::DegToRad(), 121*TMath::DegToRad(), 200) ;
-      anaQA->SetHistoXRangeAndNBins(-230,90,120);
-      anaQA->SetHistoYRangeAndNBins(370,450,40);
-    }
-    else{            
+    else{           
       anaQA->SetNumberOfModules(10); 
-      anaQA->SetHistoPhiRangeAndNBins(79*TMath::DegToRad(), 181*TMath::DegToRad(), 200) ;
-      anaQA->SetHistoXRangeAndNBins(-600,90,200);
-      anaQA->SetHistoYRangeAndNBins(100,450,100);
     }
-  }
-  anaQA->SetHistoMassRangeAndNBins(0., 1, 400) ;
-  anaQA->SetHistoAsymmetryRangeAndNBins(0., 1. , 10 );
-  anaQA->SetHistoPOverERangeAndNBins(0,10.,100);
-  anaQA->SetHistodEdxRangeAndNBins(0.,200.,200);
-  anaQA->SetHistodRRangeAndNBins(0.,TMath::Pi(),150);
-  anaQA->SetHistoTimeRangeAndNBins(-500.,500,1000);
-  anaQA->SetHistoRatioRangeAndNBins(0.,2.,100);
-  anaQA->SetHistoVertexDistRangeAndNBins(0.,500.,500);
-  anaQA->SetHistoNClusterCellRangeAndNBins(0,500,500);
-  anaQA->SetHistoZRangeAndNBins(-400,400,200);
-  anaQA->SetHistoRRangeAndNBins(400,450,25);
-  anaQA->SetHistoV0SignalRangeAndNBins(0,5000,500);
-  anaQA->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
-  anaQA->SetHistoTrackMultiplicityRangeAndNBins(0,5000,500);
-       
+  } 
+  anaQA->AddToHistogramsName("QA_"); //Begining of histograms name
+  SetHistoRangeAndNBins(anaQA); // see method below
+  
   if(kPrint) anaQA->Print(""); 
   
   return anaQA;
   
 }
 
+//________________________________________________________
+void SetHistoRangeAndNBins (AliAnaPartCorrBaseClass* ana)
+{
+  // Set common bins for all analysis and MC histograms filling
+  
+  if(kSimulation) ana->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
+  else            ana->SwitchOffDataMC() ;
+  
+  ana->SetHistoPtRangeAndNBins(0, 100, 250) ; // Energy and pt histograms
+  
+  if(kCalorimeter=="EMCAL"){
+    if(kYears==2010){
+      ana->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 122*TMath::DegToRad(), 78) ;
+      ana->SetHistoXRangeAndNBins(-230,90,120); // QA
+      ana->SetHistoYRangeAndNBins(370,450,40);  // QA
+    }
+    else {           
+      ana->SetHistoPhiRangeAndNBins(78*TMath::DegToRad(), 182*TMath::DegToRad(), 108) ;
+      ana->SetHistoXRangeAndNBins(-600,90,200); // QA
+      ana->SetHistoYRangeAndNBins(100,450,100); // QA
+    }
+    
+    ana->SetHistoEtaRangeAndNBins(-0.72, 0.72, 144) ;
+  }
+  else{
+    ana->SetHistoPhiRangeAndNBins(260*TMath::DegToRad(), 320*TMath::DegToRad(), 60) ;
+    ana->SetHistoEtaRangeAndNBins(-0.13, 0.13, 130) ;
+    
+  }
+  
+  ana->SetHistoShowerShapeRangeAndNBins(0, 3, 300);
+  
+  // Invariant mass analysis
+  ana->SetHistoMassRangeAndNBins(0., 1., 200) ;
+  ana->SetHistoAsymmetryRangeAndNBins(0., 1. , 100) ;
+  
+  // check if time calibration is on
+  ana->SetHistoTimeRangeAndNBins(-1000.,1000,1000);
+  ana->SetHistoDiffTimeRangeAndNBins(-200, 200, 800);
+  
+  // QA, electron, charged
+  ana->SetHistoPOverERangeAndNBins(0,10.,100);
+  ana->SetHistodEdxRangeAndNBins(0.,200.,200);
+  
+  // QA
+  ana->SetHistoFinePtRangeAndNBins(0, 10, 200) ; // bining for fhAmpId
+  ana->SetHistodRRangeAndNBins(0.,TMath::Pi(),150);
+  ana->SetHistoRatioRangeAndNBins(0.,2.,100);
+  ana->SetHistoVertexDistRangeAndNBins(0.,500.,500);
+  ana->SetHistoNClusterCellRangeAndNBins(0,500,500);
+  ana->SetHistoZRangeAndNBins(-400,400,200);
+  ana->SetHistoRRangeAndNBins(400,450,25);
+  ana->SetHistoV0SignalRangeAndNBins(0,5000,500);
+  ana->SetHistoV0MultiplicityRangeAndNBins(0,5000,500);
+  ana->SetHistoTrackMultiplicityRangeAndNBins(0,5000,500);
+  
+}
 
index 0de6605d7a45330aa23806c5d0ffcd5b5fd8f5c3..ecb1dbb24fd5d1510cfd7768b80f291064ab7858 100644 (file)
@@ -50,7 +50,7 @@ Int_t   kRun = 0;
 void ana(Int_t mode=mGRID)
 {
   // Main
-      
+  
   //--------------------------------------------------------------------
   // Load analysis libraries
   // Look at the method below, 
@@ -65,11 +65,11 @@ void ana(Int_t mode=mGRID)
   //-------------------------------------------------------------------------------------------------
   
   // Set kInputData and kTreeName looking to the kINDIR
-
+  
   CheckInputData(mode);
-    
+  
   // Check global analysis settings  
-
+  
   CheckEnvironmentVariables();
   
   printf("*********************************************\n");
@@ -90,7 +90,7 @@ void ana(Int_t mode=mGRID)
   }
   
   AliLog::SetGlobalLogLevel(AliLog::kError);//Minimum prints on screen
-    
+  
   //--------------------------------------
   // Make the analysis manager
   //-------------------------------------
@@ -160,32 +160,35 @@ void ana(Int_t mode=mGRID)
     AddTaskCounter("INT7"); // Min Bias
     AddTaskCounter("EMC1"); // Trig Th > 1.5 GeV approx
     AddTaskCounter("EMC7"); // Trig Th > 4-5 GeV 
-    // Add PHOS trigger counter here
+    AddTaskCounter("PHOS"); //  
   }
   
-
   gROOT->LoadMacro("AddTaskPartCorr.C"); // $ALICE_ROOT/PWG4/macros
+  
   Bool_t kPrint   = kFALSE;
   Bool_t deltaAOD = kFALSE;
+    
+  // ------
+  // Tracks
+  // ------  
   
-  // Do not reclusterize, do analysis
-  // TString sTrigger(kTrigger)
-  // AliAnalysisTaskParticleCorrelation *ana = AddTaskPartCorr(kInputData, "EMCAL", kPrint,kMC, deltaAOD,  outputFile.Data(), 
-  //                                                  kYear,kRun,kCollision,sTrigger,"");
+  // QA analysis to compare after clusterization and track isolation-correlation analysis
+  AliAnalysisTaskParticleCorrelation *ana  = AddTaskPartCorr(kInputData, "EMCAL",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
+                                                                 kYear,kRun,kCollision,"EMC7","");
   
   // -----
   // EMCAL
-  // -----
+  // -----  
   
   gROOT->LoadMacro("AddTaskEMCALClusterize.C"); // $ALICE_ROOT/PWG4/CaloCalib/macros
   Bool_t  bTrackMatch = kTRUE;
-  Int_t   minEcell    = 50;   // 50  MeV (10 MeV used in reconstruction)
-  Int_t   minEseed    = 100;  // 100 MeV
-  Int_t   dTime       = 250;  // 250  ns difference in time of cells in cluster, open
-  Int_t   wTime       = 1000; // 1000 ns time window of cells in cluster, open
-  TString clTrigger   = "";   // Do not select, do Min Bias and triggered
+  Int_t   minEcell    = 50;  // 50  MeV (10 MeV used in reconstruction)
+  Int_t   minEseed    = 100; // 100 MeV
+  Int_t   dTime       = 40;  // 40  ns difference in time of cells in cluster, open
+  Int_t   wTime       = 40;  // 40 ns time window of cells in cluster, open
+  TString clTrigger   = "";  // Do not select, do Min Bias and triggered
   
-  //Analysis with clusterizer V1 (add following lines again with V2, NxN or V1Unfold for other kind of clusterizations in EMCAL)
+  //Analysis with clusterizer V1
   AliAnalysisTaskEMCALClusterize * clv1 = AddTaskEMCALClusterize(kMC,"V1",clTrigger,kRun,kPass, bTrackMatch,
                                                                  minEcell,minEseed,dTime,wTime);    
   
@@ -194,39 +197,68 @@ void ana(Int_t mode=mGRID)
   
   if(!kMC)
   {
-    AliAnalysisTaskParticleCorrelation *anav1tr = AddTaskPartCorr(kInputData, "EMCAL",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
+    
+    AliAnalysisTaskParticleCorrelation *anav1tr  = AddTaskPartCorr(kInputData, "EMCAL",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
                                                                   kYear,kRun,kCollision,"EMC7",arrayNameV1);
     
-    AliAnalysisTaskParticleCorrelation *anav1mb = AddTaskPartCorr(kInputData, "EMCAL",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
+    AliAnalysisTaskParticleCorrelation *anav1mb  = AddTaskPartCorr(kInputData, "EMCAL",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
                                                                   kYear,kRun,kCollision,"INT7",arrayNameV1);
   }
   else 
   {// No trigger (should be MB, but for single particle productions it does not work)
+    
     AliAnalysisTaskParticleCorrelation *anav1  = AddTaskPartCorr(kInputData, "EMCAL",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
                                                                  kYear,kRun,kCollision,"",arrayNameV1);
   }
   
-  // -----
-  // PHOS
-  // -----
-  /*
-   //Add here PHOS tender or whatever is needed
-   
+  
+  //Analysis with clusterizer V2
+  AliAnalysisTaskEMCALClusterize * clv2 = AddTaskEMCALClusterize(kMC,"V2",clTrigger,kRun,kPass, bTrackMatch,
+                                                                 minEcell,minEseed,dTime,wTime);    
+  
+  TString arrayNameV2(Form("V2_Ecell%d_Eseed%d_DT%d_WT%d",minEcell,minEseed, dTime,wTime));
+  printf("Name of clusterizer array: %s\n",arrayNameV2.Data());
+  
   if(!kMC)
   {
-    AliAnalysisTaskParticleCorrelation *anav1tr = AddTaskPartCorr(kInputData, "PHOS", kPrint,kMC, deltaAOD,  outputFile.Data(), 
-                                                                  kYear,kRun,kCollision,"EMC7",""); // Change to PHOS trigger
-    
+   
+    AliAnalysisTaskParticleCorrelation *anav2tr  = AddTaskPartCorr(kInputData, "EMCAL",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
+                                                                   kYear,kRun,kCollision,"EMC7",arrayNameV2);
     
-    AliAnalysisTaskParticleCorrelation *anav1mb = AddTaskPartCorr(kInputData, "PHOS",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
-                                                                  kYear,kRun,kCollision,"INT7","");
+    AliAnalysisTaskParticleCorrelation *anav2mb  = AddTaskPartCorr(kInputData, "EMCAL",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
+                                                                   kYear,kRun,kCollision,"INT7",arrayNameV2);
   }
   else 
-  {// No trigger
-    AliAnalysisTaskParticleCorrelation *anav1mb = AddTaskPartCorr(kInputData, "PHOS",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
-                                                                  kYear,kRun,kCollision,"","");
+  {// No trigger (should be MB, but for single particle productions it does not work)
+    AliAnalysisTaskParticleCorrelation *anav2  = AddTaskPartCorr(kInputData, "EMCAL",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
+                                                                 kYear,kRun,kCollision,"",arrayNameV2);    
   }
-  */  
+  
+  // -----
+  // PHOS
+  // -----
+  /*
+   //Add here PHOS tender or whatever is needed
+   
+   if(!kMC)
+   {
+   
+   AliAnalysisTaskParticleCorrelation *anav1tr = AddTaskPartCorr(kInputData, "PHOS", kPrint,kMC, deltaAOD,  outputFile.Data(), 
+   kYear,kRun,kCollision,"PHOS",""); // Change to PHOS trigger
+   
+   
+   AliAnalysisTaskParticleCorrelation *anav1mb = AddTaskPartCorr(kInputData, "PHOS",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
+   kYear,kRun,kCollision,"INT7","");
+   
+   }
+   else 
+   {// No trigger
+   
+   AliAnalysisTaskParticleCorrelation *anav1mb = AddTaskPartCorr(kInputData, "PHOS",   kPrint,kMC, deltaAOD,  outputFile.Data(), 
+   kYear,kRun,kCollision,"","");
+   
+   }
+   */  
   
   
   //-----------------------
@@ -350,7 +382,7 @@ void CheckInputData(const anaModes mode){
     //If you want to add several ESD files sitting in a common directory INDIR
     //Specify as environmental variables the directory (INDIR), the number of files 
     //to analyze (NFILES) and the pattern name of the directories with files (PATTERN)
-
+    
     if(gSystem->Getenv("INDIR"))  
       kInDir = gSystem->Getenv("INDIR") ; 
     else cout<<"INDIR not set, use default: "<<kInDir<<endl;   
@@ -653,43 +685,43 @@ void GetAverageXsection(TTree * tree, Double_t & xs, Float_t & ntr)
 void CheckEnvironmentVariables()
 {
   
-sprintf(kTrigger,"");
-
-Bool_t bRecalibrate = kFALSE;
-Bool_t bBadChannel = kFALSE;
-
-for (int i=0; i< gApplication->Argc();i++){
-  
-#ifdef VERBOSEARGS
+  sprintf(kTrigger,"");
   
-  printf("Arg  %d:  %s\n",i,gApplication->Argv(i));
+  Bool_t bRecalibrate = kFALSE;
+  Bool_t bBadChannel = kFALSE;
   
+  for (int i=0; i< gApplication->Argc();i++){
+    
+#ifdef VERBOSEARGS
+    
+    printf("Arg  %d:  %s\n",i,gApplication->Argv(i));
+    
 #endif
-  
-  if (!(strcmp(gApplication->Argv(i),"--trigger")))
-    sprintf(trigger,gApplication->Argv(i+1));
+    
+    if (!(strcmp(gApplication->Argv(i),"--trigger")))
+      sprintf(trigger,gApplication->Argv(i+1));
     
     if (!(strcmp(gApplication->Argv(i),"--recalibrate")))
       bRecalibrate = atoi(gApplication->Argv(i+1));
-      
-      if (!(strcmp(gApplication->Argv(i),"--badchannel")))
-        bBadChannel = atoi(gApplication->Argv(i+1));
-        
-        if (!(strcmp(gApplication->Argv(i),"--run"))){
-          TString sRun(gApplication->Argv(i+1));
-          if(sRun.Contains("LHC10")) {
-            kYear = 2010;
-          }
-          else {
-            if(kRun <=0){
-              kRun = atoi(gApplication->Argv(i+1));
-            }
-            else printf("** Run number already set  to %d, do not set to %d\n",kRun,atoi(gApplication->Argv(i+1)));
-          }//numeric run
-        }//--run available
-  
-}// args loop
-
+    
+    if (!(strcmp(gApplication->Argv(i),"--badchannel")))
+      bBadChannel = atoi(gApplication->Argv(i+1));
+    
+    if (!(strcmp(gApplication->Argv(i),"--run"))){
+      TString sRun(gApplication->Argv(i+1));
+      if(sRun.Contains("LHC10")) {
+        kYear = 2010;
+      }
+      else {
+        if(kRun <=0){
+          kRun = atoi(gApplication->Argv(i+1));
+        }
+        else printf("** Run number already set  to %d, do not set to %d\n",kRun,atoi(gApplication->Argv(i+1)));
+      }//numeric run
+    }//--run available
+    
+  }// args loop
+  
   if(!sRun.Contains("LHC10")){
     if ( kRun < 140000) {
       kYear = 2010;
@@ -700,14 +732,14 @@ for (int i=0; i< gApplication->Argc();i++){
     }
   }
   
-if(kMC) sprintf(kTrigger,"");
-
-printf("*********************************************\n");
-//printf("*** Settings trigger %s, recalibrate %d, remove bad channels %d, year %d, collision %s, run %d ***\n",
-//       kTrigger,bRecalibrate,bBadChannel, kYear,kCollision.Data(), kRun);
-printf("*** Settings year %d, collision %s, run %d ***\n",kYear,kCollision.Data(), kRun);
-printf("*********************************************\n");
-
+  if(kMC) sprintf(kTrigger,"");
+  
+  printf("*********************************************\n");
+  //printf("*** Settings trigger %s, recalibrate %d, remove bad channels %d, year %d, collision %s, run %d ***\n",
+  //       kTrigger,bRecalibrate,bBadChannel, kYear,kCollision.Data(), kRun);
+  printf("*** Settings year %d, collision %s, run %d ***\n",kYear,kCollision.Data(), kRun);
+  printf("*********************************************\n");
+  
 }
 
 //_____________________________________________________________
@@ -737,6 +769,10 @@ void AddTaskCounter(const TString trigger = "MB")
     printf("counter trigger MB\n");
     counter->SelectCollisionCandidates(AliVEvent::kMB);
   }
+  else if(trigger=="PHOS"){
+    printf("counter trigger PHOS\n");
+    counter->SelectCollisionCandidates(AliVEvent::kPHI7);
+  }
   
   TString outputFile = AliAnalysisManager::GetCommonFileName(); 
   AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
@@ -746,7 +782,7 @@ void AddTaskCounter(const TString trigger = "MB")
   mgr->AddTask(counter);
   mgr->ConnectInput  (counter, 0, cinput1);
   mgr->ConnectOutput (counter, 1, coutput);
-    
+  
 }