]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/macros/ConfigAnalysisGammaHadronCorrelation.C
update track selection QA (M. Verweij)
[u/mrichter/AliRoot.git] / PWG4 / macros / ConfigAnalysisGammaHadronCorrelation.C
index 4b8c22a712792c90339ea5c68c1f565eab4d2b4c..b3320d39882f2a1279dc665cb6dc62e582676ec1 100644 (file)
 // Configuration macro example:
 //
 // Do prompt photon - hadron correlation analysis with ESDs
+// First find photons with AliAnaPhoton, then
+// isolate them with AliAnaParticleIsolation and finally correlate 
+// them with AliAnaParticleHadronCorrelation
 //
 // Author : Gustavo Conesa Balbastre (INFN-LNF)
 //------------------------------------
 
-AliAnaMaker*  ConfigAnalysis()
+AliAnaPartCorrMaker*  ConfigAnalysis()
 {
-  //
-  // Configuration goes here
-  // 
-  printf("======================== \n");
-  printf("ConfigAnalysis() \n");
-  printf("======================== \n");
-  
-  
-  //Detector Fidutial Cuts
-  AliFidutialCut * fidCut = new AliFidutialCut();
-  fidCut->DoCTSFidutialCut(kTRUE) ;
-  fidCut->DoEMCALFidutialCut(kTRUE) ;
-  fidCut->DoPHOSFidutialCut(kTRUE) ;
-  
-  fidCut->SetSimpleCTSFidutialCut(0.9,0.,360.);
-  fidCut->SetSimpleEMCALFidutialCut(0.7,80.,190.);
-  fidCut->SetSimplePHOSFidutialCut(0.13,220.,320.);
-  fidCut->Print("");
-  
-  //-----------------------------------------------------------  
-  // Reader
-  //-----------------------------------------------------------
-  AliCaloTrackReader *reader = new AliCaloTrackESDReader();
-  reader->SetDebug(-1);
-
-  //Switch on or off the detectors information that you want
-  reader->SwitchOnEMCAL();
-  reader->SwitchOnCTS();
-  reader->SwitchOnPHOS();
-  reader->SwitchOffEMCALCells();
-  reader->SwitchOffPHOSCells();
-
-  //Min particle pT
-  reader->SetEMCALPtMin(0.5); 
-  reader->SetPHOSPtMin(0.5);
-  reader->SetCTSPtMin(0.2);
-  
-  reader->SetFidutialCut(fidCut);
-  reader->Print("");
-  
-  
-  //---------------------------------------------------------------------
-  // Analysis algorithm
-  //---------------------------------------------------------------------
-  
-  //Detector Fidutial Cuts for analysis part
-  AliFidutialCut * fidCut2 = new AliFidutialCut();
-  fidCut2->DoCTSFidutialCut(kFALSE) ;
-  fidCut2->DoEMCALFidutialCut(kTRUE) ;
-  fidCut2->DoPHOSFidutialCut(kFALSE) ;
-  
-  fidCut2->SetSimpleCTSFidutialCut(0.9,0.,360.);
-  fidCut2->SetSimpleEMCALFidutialCut(0.7,80.,190.);
-  fidCut2->SetSimplePHOSFidutialCut(0.13,220.,320.);
-  fidCut2->Print("");
-
-  AliCaloPID * pid = new AliCaloPID();
-  // use selection with simple weights
-  pid->SetPHOSPhotonWeight(0.7);    pid->SetPHOSPi0Weight(0.7); 
-  pid->SetEMCALPhotonWeight(0.7);    pid->SetEMCALPi0Weight(0.7);
-  
-  pid->Print("");
-
-  AliIsolationCut * ic = new AliIsolationCut();
-  ic->SetConeSize(0.4);
-  ic->SetPtThreshold(1.);
-  ic->SetICMethod(AliIsolationCut::kPtThresIC);
-  ic->Print("");
-
-  //Photon Analysis
-  AliAnaGammaDirect *ana = new AliAnaGammaDirect();
-  ana->SetDebug(-1);
-  ana->SetMinPt(5.);
-  ana->SetCaloPID(pid);
-  ana->SetFidutialCut(fidCut2);
-  ana->SetIsolationCut(ic) ;
-  ana->SetDetector("PHOS");
-  ana->SwitchOnIsolation();
-  ana->SwitchOnCaloPID();
-  ana->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
-  ana->SwitchOffFidutialCut();
-  ana->SwitchOffInvariantMass();
-  ana->SwitchOffDataMC() ;
-
-  ana->Print("");
-
-  //Photon- hadron correlation
-  AliAnaParticleHadronCorrelation *ana2 = new AliAnaParticleHadronCorrelation();
-  ana2->SetDebug(-1);
-  ana2->SetCaloPID(pid);
-  ana2->SwitchOnCaloPID();
-  ana2->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
-  ana2->SwitchOffFidutialCut();
-  ana2->SetPtCutRange(1,100);
-  ana2->SetDeltaPhiCutRange(1.5,4.5);
-  
-  ana2->Print("");
-  //---------------------------------------------------------------------
-  // Set  analysis algorithm and reader
-  //---------------------------------------------------------------------
-  maker = new AliAnaMaker();
-  maker->SetReader(reader);//pointer to reader
-  maker->AddAnalysis(ana,0);
-  maker->AddAnalysis(ana2,1);
-  maker->SetAODBranchName("PhotonHadronCorrelation");
-  maker->SetAnaDebug(-1)  ;
-  maker->SwitchOnHistogramsMaker()  ;
-  //maker->SwitchOffHistogramsMaker() ;  
-  maker->SwitchOnAODsMaker()  ;
-  //maker->SwitchOffAODsMaker() ; 
-  
-  maker->Print("");
-  //
-  printf("======================== \n");
-  printf("END ConfigAnalysis() \n");
-  printf("======================== \n");
-  return maker ;
+       //
+       // Configuration goes here
+       // 
+       printf("======================== \n");
+       printf("ConfigAnalysis() \n");
+       printf("======================== \n");
+       
+       
+       //Detector Fiducial Cuts
+       AliFiducialCut * fidCut = new AliFiducialCut();
+       fidCut->DoCTSFiducialCut(kTRUE) ;
+       fidCut->DoEMCALFiducialCut(kTRUE) ;
+       fidCut->DoPHOSFiducialCut(kTRUE) ;
+       
+       fidCut->SetSimpleCTSFiducialCut(0.9,0.,360.);
+       fidCut->SetSimpleEMCALFiducialCut(0.7,80.,190.);
+       fidCut->SetSimplePHOSFiducialCut(0.13,220.,320.);
+       
+       fidCut->Print("");
+       
+       //-----------------------------------------------------------  
+       // Reader
+       //-----------------------------------------------------------
+       AliCaloTrackESDReader *reader = new AliCaloTrackESDReader();
+       reader->SetDebug(-1);
+       
+       //Switch on or off the detectors information that you want
+       reader->SwitchOnEMCAL();
+       reader->SwitchOnCTS();
+       reader->SwitchOnPHOS();
+       reader->SwitchOffEMCALCells();
+       reader->SwitchOffPHOSCells();
+       
+       
+       //Min particle pT
+       reader->SetEMCALPtMin(0.5); 
+       reader->SetPHOSPtMin(0.5);
+       reader->SetCTSPtMin(0.2);
+       
+       reader->SetFiducialCut(fidCut);
+       
+       //     //We want tracks fitted in the detectors:
+       //     ULong_t status=AliAODTrack::kTPCrefit;
+       //     status|=AliAODTrack::kITSrefit; //(default settings)
+       
+       //     We want tracks whose PID bit is set:
+       //     ULong_t status =AliAODTrack::kITSpid;
+       //     status|=AliAODTrack::kTPCpid;    
+       
+       //      reader->SetTrackStatus(status);
+       
+       //Remove the temporal AODs we create.   
+       reader->SwitchOnCleanStdAOD();  
+       
+       reader->Print("");
+       
+       
+       //---------------------------------------------------------------------
+       // Analysis algorithm
+       //---------------------------------------------------------------------
+       //<<<< first analysis >>> select the photons
+       //Detector Fiducial Cuts for analysis part
+       AliFiducialCut * fidCut2 = new AliFiducialCut();
+       fidCut2->DoCTSFiducialCut(kFALSE) ;
+       fidCut2->DoEMCALFiducialCut(kTRUE) ;
+       fidCut2->DoPHOSFiducialCut(kFALSE) ;
+       
+       fidCut2->SetSimpleCTSFiducialCut(0.9,0.,360.);
+       fidCut2->SetSimpleEMCALFiducialCut(0.7,80.,190.);
+       fidCut2->SetSimplePHOSFiducialCut(0.13,220.,320.);
+       fidCut2->Print("");
+       
+       AliCaloPID * pid = new AliCaloPID();
+       // use selection with simple weights
+       pid->SetPHOSPhotonWeight(0.7);    pid->SetPHOSPi0Weight(0.7); 
+       pid->SetEMCALPhotonWeight(0.7);    pid->SetEMCALPi0Weight(0.7);
+       
+       pid->Print("");
+       
+       
+       AliAnaPhoton *anaphoton = new AliAnaPhoton();
+       anaphoton->SetDebug(-1); //10 for lots of messages
+       anaphoton->SetMinPt(0.2);
+       anaphoton->SetMinDistanceToBadChannel(2, 4, 5);
+       anaphoton->SetCaloPID(pid);
+       anaphoton->SetFiducialCut(fidCut2); //More acceptance selections if needed at this level
+       anaphoton->SetCalorimeter("PHOS");
+       anaphoton->SwitchOffDataMC() ;//Access MC stack and fill more histograms
+       anaphoton->SwitchOnCaloPID();
+       anaphoton->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
+       anaphoton->SwitchOnFiducialCut();
+       anaphoton->SetOutputAODName("Photons");
+       anaphoton->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
+       //Set Histrograms bins and ranges
+       //      anaphoton->SetHistoPtRangeAndNBins(0, 50, 100) ;
+       //      anaphoton->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
+       //      anaphoton->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
+       anaphoton->Print("");
+       
+       // >>>> Second Analysis <<<< Isolate the photons
+       AliIsolationCut * ic = new AliIsolationCut();
+       ic->SetConeSize(0.5);
+       ic->SetPtThreshold(1.);
+       ic->SetICMethod(AliIsolationCut::kPtThresIC);
+       ic->Print("");
+       
+       AliAnaParticleIsolation *anaisol = new AliAnaParticleIsolation();
+       anaisol->SetDebug(-1);
+       anaisol->SetMinPt(5);
+       anaisol->SetInputAODName("Photons");
+       anaisol->SetCalorimeter("PHOS");
+       anaisol->SwitchOffDataMC() ;//Access MC stack and fill more histograms
+       //Select clusters with no pair, if both clusters with pi0 mass
+       anaisol->SwitchOffInvariantMass();
+       //anaisol->SetNeutralMesonSelection(nms);
+       //Do isolation cut
+       anaisol->SetIsolationCut(ic);   
+       //Do or not do isolation with previously produced AODs.
+       //No effect if use of SwitchOnSeveralIsolation()
+       anaisol->SwitchOffReIsolation();
+       //Multiple IC
+       anaisol->SwitchOffSeveralIsolation() ;
+               
+       anaisol->Print("");
+       
+       //<<<Third analysis>>> Isolated Photon- hadron correlation
+       AliAnaParticleHadronCorrelation *anacorr = new AliAnaParticleHadronCorrelation();
+       anacorr->SetInputAODName("Photons");
+       anacorr->SetOutputAODName("CorrelatedPi0s"+calorimeter);
+       anacorr->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
+       anacorr->SetDebug(-1);
+       anacorr->SetCaloPID(pid);
+       anacorr->SwitchOnCaloPID();
+       anacorr->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
+       anacorr->SwitchOffFiducialCut();
+       anacorr->SetPtCutRange(1,100);
+       anacorr->SetDeltaPhiCutRange(1.5,4.5);
+       //Set Histrograms bins and ranges
+       //      anaphoton->SetHistoPtRangeAndNBins(0, 50, 100) ;
+       //      anaphoton->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
+       //      anaphoton->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;   
+       anacorr->Print("");
+       
+       //---------------------------------------------------------------------
+       // Set  analysis algorithm and reader
+       //---------------------------------------------------------------------
+       maker = new AliAnaPartCorrMaker();
+       maker->SetReader(reader);//pointer to reader
+       maker->AddAnalysis(anaphoton,0);
+       maker->AddAnalysis(anaisol,1);
+       maker->AddAnalysis(anacorr,2);
+       maker->SetAnaDebug(-1)  ;
+       maker->SwitchOnHistogramsMaker()  ;
+       maker->SwitchOnAODsMaker()  ;
+       
+       maker->Print("");
+       //
+       printf("======================== \n");
+       printf("END ConfigAnalysis() \n");
+       printf("======================== \n");
+       return maker ;
 }