-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.
::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;
//===========================================================================
// *** 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();
}
}
+ 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("");
// 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();
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
fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
}
- if(!data.Contains("delta")) {
+ if(!inputDataType.Contains("delta")) {
anaphoton->SetOutputAODName(Form("Photons%s",calorimeter.Data()));
anaphoton->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
}
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("");
//---------------------------
//---------------------------
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");
}
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 ###
//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.
//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()
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();
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();
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
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
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("");
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
//==============================================================================
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);