Enlarging window for DCS DPs retrieval for short runs for GRP + Keeping connection...
authorzampolli <chiara.zampolli@cern.ch>
Wed, 29 Oct 2014 11:46:10 +0000 (12:46 +0100)
committerzampolli <chiara.zampolli@cern.ch>
Wed, 29 Oct 2014 11:46:10 +0000 (12:46 +0100)
517 files changed:
.DS_Store [new file with mode: 0644]
ACORDE/CMakeLists.txt
AD/CMakeLists.txt
ALIROOT/CMakeLists.txt
ANALYSIS/AliAnalysisTaskPIDqa.cxx
ANALYSIS/AliAnalysisTaskSE.cxx
ANALYSIS/AliAnalysisTaskSE.h
ANALYSIS/AliAnalysisUtils.cxx
ANALYSIS/AliCentralitySelectionTask.cxx
ANALYSIS/AliEPSelectionTask.cxx
ANALYSIS/AliTriggerAnalysis.cxx
ANALYSIS/CMakeLists.txt
ANALYSIS/ESDfilter/AliAnalysisTaskESDfilter.cxx
ANALYSIS/TenderSupplies/AliPHOSTenderSupply.cxx
ANALYSIS/macros/train/AddMCGenAmpt.C
BCM/CMakeLists.txt
CMakeLists.txt
CORRFW/AliCFEventRecCuts.cxx
CORRFW/CMakeLists.txt
DIME/CMakeLists.txt
DPMJET/CMakeLists.txt
EMCAL/AliEMCALRecoUtils.cxx
EMCAL/CMakeLists.txt
EMCAL/doc/geometry.tex
EPOS/CMakeLists.txt
EVE/CMakeLists.txt
EVE/EveDet/AliEveMUONTrack.cxx
EVE/alice-macros/esd_V0.C
EVE/alice-macros/esd_cascade.C
EVGEN/CMakeLists.txt
FASTSIM/CMakeLists.txt
FIT/CMakeLists.txt
FMD/AliFMDReconstructor.cxx
FMD/CMakeLists.txt
HERWIG/CMakeLists.txt
HIJING/CMakeLists.txt
HLT/CMakeLists.txt
HLT/QA/tasks/AliAnalysisTaskHLT.cxx
HLT/QA/tasks/AliAnalysisTaskHLTCentralBarrel.cxx
HMPID/CMakeLists.txt
ITS/AliITSMeanVertexer.cxx
ITS/AliITSQADataMakerRec.cxx
ITS/AliITSVertexer3D.cxx
ITS/AliITSVertexerZTest.C
ITS/CMakeLists.txt
ITS/DoVerticesSPD.C
ITS/UPGRADE/AliITSUClusterizer.cxx
ITS/UPGRADE/AliITSURecoParam.cxx
ITS/UPGRADE/AliITSURecoParam.h
ITS/UPGRADE/AliITSUTrackerCooked.cxx
ITS/UPGRADE/CMakeLists.txt
ITS/UPGRADE/macros/QA/AliITSUComparisonPileup.C
ITS/UPGRADE/testITSU/MakeITSRecoParam.C
ITS/macrosSDD/CheckSDDInESD.C
ITS/oldmacros/AliITSVertexerTracksTest2.C
JETAN/AliAnalysisTaskFastEmbedding.cxx
JETAN/AliAnalysisTaskJetBackgroundSubtract.cxx
JETAN/AliAnalysisTaskJetCluster.cxx
JETAN/CMakeLists.txt
LHAPDF/CMakeLists.txt
MFT/CMakeLists.txt
MICROCERN/CMakeLists.txt
MONITOR/CMakeLists.txt
MONITOR/CMakelibMONITORzmq.pkg
MUON/AliMUONAlignmentTask.cxx
MUON/AliMUONCheck.cxx
MUON/CMakeLists.txt
MUON/MUONefficiency.C
MUON/MUONmassPlot_ESD.C
OADB/CMakeLists.txt
PHOS/AliPHOSPIDv1.cxx
PHOS/CMakeLists.txt
PMD/CMakeLists.txt
PWG/CMakeLists.txt
PWG/CMakelibPWGDevNanoAOD.pkg
PWG/CMakelibPWGEMCAL.pkg
PWG/CMakelibPWGflowTasks.pkg
PWG/DevNanoAOD/AliAnalysisNanoAODCuts.cxx
PWG/DevNanoAOD/AliNanoAODHeader.h [deleted file]
PWG/EMCAL/AliAnalysisTaskEMCALClusterizeFast.cxx
PWG/EMCAL/AliAnalysisTaskEmcal.cxx
PWG/EMCAL/AliAnalysisTaskEmcal.h
PWG/EMCAL/AliEmcalContainer.h
PWG/EMCAL/AliEmcalPatchFromCellMaker.cxx [new file with mode: 0644]
PWG/EMCAL/AliEmcalPatchFromCellMaker.h [new file with mode: 0644]
PWG/EMCAL/AliEmcalPhysicsSelection.cxx
PWG/EMCAL/AliEmcalTriggerMaker.cxx
PWG/EMCAL/AliEmcalTriggerMaker.h
PWG/EMCAL/macros/AddTaskEmcalPatchFromCellMaker.C [new file with mode: 0644]
PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C
PWG/FLOW/Tasks/AliAnalysisTaskFlowEPCascade.cxx
PWG/FLOW/Tasks/AliAnalysisTaskFlowEventforRP.cxx
PWG/FLOW/Tasks/AliAnalysisTaskFlowStrange.cxx
PWG/FLOW/Tasks/AliAnalysisTaskPIDconfig.cxx [new file with mode: 0644]
PWG/FLOW/Tasks/AliAnalysisTaskPIDconfig.h [new file with mode: 0644]
PWG/FLOW/Tasks/AliAnalysisTaskPhiFlow.cxx
PWG/FLOW/Tasks/AliAnalysisTaskVnV0.cxx
PWG/FLOW/Tasks/AliFlowEvent.cxx
PWG/FLOW/Tasks/AliFlowEventCuts.cxx
PWG/FLOW/Tasks/AliFlowEventSimpleMaker.cxx
PWG/PWGDevNanoAODLinkDef.h
PWG/PWGEMCALLinkDef.h
PWG/PWGflowTasksLinkDef.h
PWG/muon/AliAODMuonReplicator.cxx
PWG/muon/AliAnalysisMuonUtility.cxx
PWG/muon/AliAnalysisTaskCreateMixedDimuons.cxx
PWG/muon/AliAnalysisTaskDimuonCFContainerBuilder.cxx
PWG/muon/AliAnalysisTaskESDMuonFilter.cxx
PWG/muon/AliAnalysisTaskLUT.cxx
PWG/muon/AliAnalysisTaskLinkToMC.cxx
PWG/muon/AliAnalysisTaskMuonAODCreation.cxx
PWG/muon/AliAnalysisTaskMuonAODfromGeneral.cxx
PWG/muon/AliAnalysisTaskMuonCollisionMultiplicity.cxx
PWG/muon/AliAnalysisTaskMuonDistributions.cxx
PWG/muon/AliAnalysisTaskSEMuonsHF.cxx
PWG/muon/AliAnalysisTaskSingleMuESD.cxx
PWG/muon/AliCFMuonResUpsilon.cxx
PWG/muon/AliCFMuonSingleTask1.cxx
PWGCF/CMakeLists.txt
PWGCF/Correlations/Base/AliAnalyseLeadingTrackUE.cxx
PWGCF/Correlations/Base/AliAnalysisTaskCFTree.cxx
PWGCF/Correlations/DPhi/AliAnalysisTask3PCorrelations.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskContMC.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskDiHadron.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskDptDptCorrelations.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskDptDptQA.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskLongRangeCorrelations.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskMinijet.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskPhiCorrelations.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskTwoPlusOne.cxx
PWGCF/Correlations/DPhi/AliDptDptInMC.cxx
PWGCF/Correlations/DPhi/AliLeadingV0Correlation.cxx
PWGCF/Correlations/DPhi/DiHadronPID/AliAODEventCutsDiHadronPID.cxx
PWGCF/Correlations/DPhi/DiHadronPID/AliAnalysisTaskCompareAODTrackCuts.cxx
PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.cxx
PWGCF/Correlations/DPhi/FourierDecomposition/AliMuonEffMC.cxx
PWGCF/Correlations/DPhi/MuonHadron/AliAnalysisTaskDiMuonCorrelations.cxx
PWGCF/Correlations/DPhi/MuonHadron/AliAnalysisTaskMuonHadronCorrelations.cxx
PWGCF/Correlations/DPhi/PhiEffMC/AliAnalysisTaskPhiEffMc.cxx
PWGCF/Correlations/DPhi/PidPid/AliAnalysisTaskPidPidCorrelations.cxx
PWGCF/Correlations/DPhi/TriggerPID/AliAnalysisTaskPIDCORR.cxx
PWGCF/Correlations/DPhi/TriggerPID/AliTwoParticlePIDCorr.cxx
PWGCF/Correlations/JCORRAN/AliJBaseEventHeader.h
PWGCF/Correlations/JCORRAN/AliJFilter.cxx
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskBF.cxx
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskEffContBF.cxx
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskEfficiencyBF.cxx
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskEfficiencyBFPsi.cxx
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskEventMixingBF.cxx
PWGCF/EBYE/BalanceFunctions/AliBalancePsi.cxx
PWGCF/EBYE/Fluctuations/AliAnalysisTaskChargeFluctuations.cxx
PWGCF/EBYE/Fluctuations/AliEbyEFluctuationAnalysisTask.cxx
PWGCF/EBYE/Fluctuations/AliEbyEFluctuationAnalysisTaskTrain.cxx
PWGCF/EBYE/Fluctuations/AliEbyEHigherMomentsEffContTask.cxx
PWGCF/EBYE/Fluctuations/AliEbyEHigherMomentsTask.cxx
PWGCF/EBYE/Fluctuations/AliEbyEHigherMomentsTaskPID.cxx
PWGCF/EBYE/Fluctuations/AliEbyEMultFluctuationTask.cxx
PWGCF/EBYE/Fluctuations/AliHigherMomentsToyModel.cxx
PWGCF/EBYE/LRC/AliAnalysisTaskLRC.cxx
PWGCF/EBYE/MeanPtFluctuations/AliAnalysisTaskPtFluc.cxx
PWGCF/EBYE/MeanPtFluctuations/AliAnalysisTaskPtFlucPbPb.cxx
PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.cxx
PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.cxx
PWGCF/EBYE/PIDFluctuation/task/AliEbyEParticleRatioFluctuationTask.cxx
PWGCF/EBYE/PIDFluctuation/task/AliEbyEPidRatioHelper.cxx
PWGCF/EBYE/PIDFluctuation/task/AliEbyEPidRatioTask.cxx
PWGCF/EBYE/PIDFluctuation/task/AliEbyEPidTTask.cxx
PWGCF/EBYE/PIDFluctuation/task/AliEbyEPidTTaskMC.cxx
PWGCF/FEMTOSCOPY/AliFemto/AliAnalysisTaskFemto.cxx
PWGCF/FEMTOSCOPY/AliFemto/AliFemtoEventReaderAOD.cxx
PWGCF/FEMTOSCOPY/AliFemto/AliFemtoEventReaderESDChainKine.cxx
PWGCF/FEMTOSCOPY/AliFemto/AliFemtoEventReaderStandard.cxx
PWGCF/FEMTOSCOPY/AliFemtoUser/AliAnalysisTaskParticleEfficiency.cxx
PWGCF/FEMTOSCOPY/Chaoticity/AliChaoticity.cxx
PWGCF/FEMTOSCOPY/Chaoticity/AliFourPion.cxx
PWGCF/FEMTOSCOPY/Chaoticity/AliThreePionRadii.cxx
PWGCF/FEMTOSCOPY/ESE/AliAnalysisTaskFemtoESE.cxx
PWGCF/FEMTOSCOPY/PLamAnalysis/AliAnalysisTaskProtonLambda.cxx
PWGCF/FEMTOSCOPY/UNICOR/AliUnicorEventAliceESD.h
PWGCF/FEMTOSCOPYAOD/AliAnalysisTaskPWG2AODUpdate.cxx
PWGCF/FEMTOSCOPYAOD/AliAnalysisTaskPWG2ESDfilter.cxx
PWGCF/FLOW/CME/AliAnalysisTaskCMEv2A.cxx
PWGCF/FLOW/Documentation/examples/manual/ttree/macros/readTTree.C
PWGDQ/CMakeLists.txt
PWGDQ/dielectron/AliAnalysisTaskDielectronFilter.cxx
PWGDQ/dielectron/AliAnalysisTaskReducedTree.cxx
PWGDQ/dielectron/AliDielectronEventCuts.cxx
PWGDQ/dielectron/AliDielectronVarManager.h
PWGDQ/dielectron/macrosJPSI/RaaPbPb2010/AliAnalysisTaskCorrelationTree.cxx
PWGGA/CMakeLists.txt
PWGGA/CaloTasks/AliAnalysisTaskCaloFilter.cxx
PWGGA/CaloTrackCorrelations/AliAnaElectron.cxx
PWGGA/CaloTrackCorrelations/AliAnaParticleIsolation.cxx
PWGGA/CaloTrackCorrelations/AliAnaParticleIsolation.h
PWGGA/CaloTrackCorrelations/AliAnaParticleJetFinderCorrelation.cxx
PWGGA/CaloTrackCorrelations/AliAnaParticleJetLeadingConeCorrelation.cxx
PWGGA/CaloTrackCorrelations/AliAnaPhoton.cxx
PWGGA/CaloTrackCorrelations/AliAnaPi0.cxx
PWGGA/CaloTrackCorrelations/AliAnaPi0.h
PWGGA/CaloTrackCorrelations/AliAnaPi0EbE.cxx
PWGGA/CaloTrackCorrelations/AliAnaRandomTrigger.cxx
PWGGA/CaloTrackCorrelations/macros/AddTaskCaloTrackCorr.C
PWGGA/EMCALTasks/AliAnalysisTaskEMCALClusterize.cxx
PWGGA/EMCALTasks/AliAnalysisTaskEMCALMesonGGSDM.cxx
PWGGA/EMCALTasks/AliAnalysisTaskEMCALMesonGGSDMpPb.cxx
PWGGA/EMCALTasks/AliAnalysisTaskEMCALPi0PbPb.cxx
PWGGA/GammaConv/AliAnalysisTaskGCPartToPWG4Part.cxx
PWGGA/GammaConv/AliAnalysisTaskGCPartToPWG4Part.h
PWGGA/GammaConv/AliAnalysisTaskGammaConvDalitzV1.cxx
PWGGA/GammaConv/AliConvEventCuts.cxx
PWGGA/GammaConv/AliConversionCuts.cxx
PWGGA/PHOSTasks/PHOS_embedding/AliAnalysisTaskPi0DiffEfficiency.cxx
PWGGA/PHOSTasks/PHOS_embedding/AliAnalysisTaskPi0Efficiency.cxx
PWGGA/PHOSTasks/PHOS_embedding/AliPHOSEmbedding.cxx
PWGHF/CMakeLists.txt
PWGHF/correlationHF/AliAnalysisTaskDStarCorrelations.cxx
PWGHF/correlationHF/AliAnalysisTaskDxHFECorrelation.cxx
PWGHF/correlationHF/AliAnalysisTaskSED0Correlations.cxx
PWGHF/correlationHF/AliAnalysisTaskSEHFCJqa.cxx
PWGHF/correlationHF/AliDxHFECorrelation.cxx
PWGHF/correlationHF/AliHFCorrelator.cxx
PWGHF/hfe/AliAnalysisTaskEMCalHFEpA.cxx
PWGHF/hfe/AliAnalysisTaskFlowITSTPCTOFQCSP.cxx
PWGHF/hfe/AliAnalysisTaskFlowTPCEMCalQCSP.cxx
PWGHF/hfe/AliAnalysisTaskHFE.cxx
PWGHF/hfe/AliAnalysisTaskHFEemcQA.cxx
PWGHF/hfe/AliHFEpidTPC.cxx
PWGHF/hfe/macros/configs/PbPb/CentCorrMapsTPC.root
PWGHF/vertexingHF/AliAnalysisTaskCheckHFMCProd.cxx
PWGHF/vertexingHF/AliAnalysisTaskCombinHF.cxx
PWGHF/vertexingHF/AliAnalysisTaskSEBkgLikeSignD0.cxx
PWGHF/vertexingHF/AliAnalysisTaskSECharmFraction.cxx
PWGHF/vertexingHF/AliAnalysisTaskSED0Mass.cxx
PWGHF/vertexingHF/AliAnalysisTaskSEDStarSpectra.cxx
PWGHF/vertexingHF/AliAnalysisTaskSEDplus.cxx
PWGHF/vertexingHF/AliAnalysisTaskSEDs.cxx
PWGHF/vertexingHF/AliAnalysisTaskSEDvsMultiplicity.cxx
PWGHF/vertexingHF/AliAnalysisTaskSEDvsMultiplicity.h
PWGHF/vertexingHF/AliAnalysisTaskSEHFQA.cxx
PWGHF/vertexingHF/AliAnalysisTaskSEImproveITS.cxx
PWGHF/vertexingHF/AliAnalysisTaskSELambdac.cxx
PWGHF/vertexingHF/AliAnalysisTaskSESelectHF.cxx
PWGHF/vertexingHF/AliAnalysisVertexingHF.cxx
PWGHF/vertexingHF/AliRDHFCuts.cxx
PWGHF/vertexingHF/AliVertexingHFUtils.cxx
PWGHF/vertexingHF/AliVertexingHFUtils.h
PWGHF/vertexingHF/macros/AddTaskDvsMultiplicity.C
PWGHF/vertexingHF/macros/ReadDvsMultiplicity.C
PWGJE/AliAnalysisTaskAj.cxx
PWGJE/AliAnalysisTaskFragmentationFunction.cxx
PWGJE/AliAnalysisTaskJetCore.cxx
PWGJE/AliAnalysisTaskJetCorePP.cxx
PWGJE/AliAnalysisTaskJetProperties.cxx
PWGJE/AliAnalysisTaskJetServices.cxx
PWGJE/AliAnalysisTaskJetSpectrum2.cxx
PWGJE/AliAnalysisTaskJetsTM.cxx
PWGJE/AliAnalysisTaskPartonDisc.cxx
PWGJE/AliPWG4HighPtSpectra.cxx
PWGJE/AliPWG4HighPtTrackQA.cxx
PWGJE/CMakeLists.txt
PWGJE/CMakelibPWGJEEMCALJetTasks.pkg
PWGJE/EMCALJetTasks/AliEmcalPicoTrackInGridMaker.cxx [new file with mode: 0644]
PWGJE/EMCALJetTasks/AliEmcalPicoTrackInGridMaker.h [new file with mode: 0644]
PWGJE/EMCALJetTasks/AliJetContainer.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskCLQA.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskDcalDijetPerf.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskDcalDijetPerf.h
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalHighMultTrigger.cxx [new file with mode: 0644]
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalHighMultTrigger.h [new file with mode: 0644]
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadEPpid.cxx
PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskV0sInJetsEmcal.cxx
PWGJE/EMCALJetTasks/macros/AddTaskDcalDijetPerf.C
PWGJE/EMCALJetTasks/macros/AddTaskEmcalHighMultTrigger.C [new file with mode: 0644]
PWGJE/EMCALJetTasks/macros/AddTaskGridMaker.C [new file with mode: 0644]
PWGJE/PWGJEEMCALJetTasksLinkDef.h
PWGJE/StrangenessInJets/AliAnalysisTaskJetChem.cxx
PWGJE/StrangenessInJets/AliAnalysisTaskV0sInJets.cxx
PWGJE/UserTasks/AliAnalysisTaskIDFFTCF.cxx
PWGJE/UserTasks/AliAnalysisTaskIDFragmentationFunction.cxx
PWGJE/UserTasks/AliAnalysisTaskJetAntenna.cxx
PWGJE/UserTasks/AliAnalysisTaskJetHBOM.cxx
PWGJE/UserTasks/AliAnalysisTaskJetProtonCorr.cxx
PWGJE/UserTasks/AliAnalysisTaskJetShape.cxx
PWGJE/UserTasks/AliAnalysisTaskPPJetSpectra.cxx
PWGLF/CMakeLists.txt
PWGLF/FORWARD/analysis2/AliBaseESDTask.cxx
PWGLF/FORWARD/analysis2/AliBaseESDTask.h
PWGLF/FORWARD/analysis2/AliBasedNdetaTask.cxx
PWGLF/FORWARD/analysis2/AliCopyHeaderTask.cxx
PWGLF/FORWARD/analysis2/AliFMDEnergyFitter.cxx
PWGLF/FORWARD/analysis2/AliFMDSharingFilter.cxx
PWGLF/FORWARD/analysis2/AliForwardCorrectionManager.cxx
PWGLF/FORWARD/analysis2/AliForwardQATask.cxx
PWGLF/FORWARD/analysis2/AliOADBForward.cxx
PWGLF/FORWARD/analysis2/corrs/DrawEmpirical.C [new file with mode: 0644]
PWGLF/FORWARD/analysis2/qa/QABase.h
PWGLF/FORWARD/analysis2/qa/QAPlotter.C
PWGLF/FORWARD/analysis2/qa/QATrender.C
PWGLF/FORWARD/analysis2/qa/RunQAMT.sh
PWGLF/FORWARD/analysis2/qa/makeIndex.sh
PWGLF/FORWARD/analysis2/sim/AOD.C
PWGLF/FORWARD/analysis2/sim/BaseConfig.C
PWGLF/FORWARD/analysis2/sim/Final.jdl.in
PWGLF/FORWARD/analysis2/sim/Merge.jdl.in
PWGLF/FORWARD/analysis2/sim/QA.C
PWGLF/FORWARD/analysis2/sim/QAConfig.C
PWGLF/FORWARD/analysis2/sim/doit.sh
PWGLF/FORWARD/analysis2/sim/merge.sh
PWGLF/FORWARD/photons/AliAnalysisTaskPMD.cxx
PWGLF/FORWARD/photons/AliAnalysisTaskPMDSim.cxx
PWGLF/QATasks/AliAnalysisTaskQAHighPtDeDx.cxx
PWGLF/RESONANCES/AliRsnCutPrimaryVertex.cxx
PWGLF/RESONANCES/AliRsnEvent.cxx
PWGLF/RESONANCES/AliRsnMiniAnalysisTask.cxx
PWGLF/RESONANCES/extra/AliAnalysisTaskResonanceQA.cxx
PWGLF/RESONANCES/extra/AliAnalysisTaskSigma1385.cxx
PWGLF/RESONANCES/extra/AliRsnAnalysisPhi7TeV.cxx
PWGLF/RESONANCES/extra/AliRsnAnalysisPhi900GeV.cxx
PWGLF/RESONANCES/extra/AliXiStar.cxx
PWGLF/SPECTRA/AntiprotonToProton/AliProtonAnalysisBase.cxx
PWGLF/SPECTRA/AntiprotonToProton/AliProtonQAAnalysis.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysis.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysisPbPb.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysisPbPb2011.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysisPbPbAOD.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysisPbPbAOD.h
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysispPb.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtCorrection.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtCutAnalysis.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtCutAnalysisPbPb.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtEventCuts.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtTrackDumpTask.cxx
PWGLF/SPECTRA/IdentifiedHighPt/train/AliAnalysisTaskHighPtDeDx.cxx
PWGLF/SPECTRA/Nuclei/B2/AliAnalysisTaskB2AOD.cxx
PWGLF/SPECTRA/Nuclei/PtSpectra/AliAnalysisAntiNuclei.cxx
PWGLF/SPECTRA/Nuclei/deuteronpA/AliAnalysisDeuteronpA.cxx
PWGLF/SPECTRA/PiKaPr/ITSsa/AliAnalysisTaskSEITSsaSpectra.cxx
PWGLF/SPECTRA/PiKaPr/TOF/pp7/AliAnalysisCombinedHadronSpectra2MC.cxx
PWGLF/SPECTRA/PiKaPr/TOF/pp7/TOFSpectrappAnalysis.cxx
PWGLF/SPECTRA/PiKaPr/TPC/pp900/AliAnalysisTaskChargedHadronSpectra.cxx
PWGLF/SPECTRA/PiKaPr/TPCTOF/AliAnalysisCombinedHadronSpectra.cxx
PWGLF/SPECTRA/PiKaPr/TPCTOFpA/AliAnalysisTPCTOFpA.cxx
PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAOD.cxx
PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAllChAOD.cxx
PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskV2AllChAOD.cxx
PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskV2AllChAOD.h
PWGLF/SPECTRA/PiKaPr/TestAOD/AliSpectraAODEventCuts.cxx
PWGLF/SPECTRA/PiKaPr/TestAOD/AliSpectraAODEventCuts.h
PWGLF/SPECTRA/PiKaPr/TestAOD/AliSpectraBothEventCuts.cxx
PWGLF/SPECTRA/XtAnalysis/AliXtAnalysis.cxx
PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckCascadePbPb.cxx
PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckPerformanceCascadePbPb.cxx
PWGLF/STRANGENESS/Correlations/AliAnalysisTaskLambdaOverK0sJets.cxx
PWGLF/STRANGENESS/Correlations/AliAnalysisTaskLambdaOverK0sJets.h
PWGLF/STRANGENESS/Correlations/AliAnalysisTaskV0ChCorrelations.cxx
PWGLF/STRANGENESS/Correlations/macros/AddTaskLambdaOverK0sJets.C
PWGLF/STRANGENESS/Hypernuclei/AliAODMCNuclExReplicator.cxx
PWGLF/STRANGENESS/Hypernuclei/AliAODNuclExReplicator.cxx
PWGLF/STRANGENESS/Hypernuclei/AliAnalysisTaskAntiHe4.cxx
PWGLF/STRANGENESS/Hypernuclei/AliAnalysisTaskHdibaryonLPpi.cxx
PWGLF/STRANGENESS/Hypernuclei/AliAnalysisTaskHelium3Pi.cxx
PWGLF/STRANGENESS/Hypernuclei/AliAnalysisTaskHelium3PiMC.cxx
PWGLF/STRANGENESS/Hypernuclei/AliAnalysisTaskLambdaNAOD.cxx
PWGLF/STRANGENESS/Hypernuclei/AliAnalysisTaskNucleiv2.cxx
PWGLF/STRANGENESS/Hypernuclei/AliAnalysisTaskNucleiv2SP.cxx
PWGLF/STRANGENESS/Hypernuclei/AliAnalysisTaskReadNuclexAOD.cxx
PWGLF/STRANGENESS/LambdaK0PbPb/AliAnalysisTaskCTauPbPb.cxx
PWGLF/STRANGENESS/LambdaK0PbPb/AliAnalysisTaskCTauPbPbaod.cxx
PWGLF/STRANGENESS/LambdaK0PbPb/AliAnalysisTaskLukeV0.cxx
PWGLF/STRANGENESS/LambdaK0PbPb/AliAnalysisTaskV0ForRAA.cxx
PWGPP/AliAnaVZEROQA.cxx
PWGPP/AliAnalysisTaskFilteredTree.cxx
PWGPP/AliAnalysisTaskIPInfo.cxx
PWGPP/AliFilteredTreeEventCuts.cxx
PWGPP/AliIntSpotEstimator.cxx
PWGPP/CMakeLists.txt
PWGPP/Centrality/AliAnalysisTaskHIMultCorr.cxx
PWGPP/EvTrkSelection/AliCFSingleTrackEfficiencyTask.cxx
PWGPP/ITS/AliAnalysisTaskITSTrackingCheck.cxx
PWGPP/ITS/AliAnalysisTaskSEImpParRes.cxx
PWGPP/ITS/AliMeanVertexCalibTask.cxx
PWGPP/MUON/lite/PlotMuonQA.C
PWGPP/QA/detectorQAscripts/EXAMPLE.sh.template
PWGPP/QA/detectorQAscripts/V0.sh
PWGPP/QA/scripts/runQA.sh
PWGPP/T0/AliT0AnalysisTaskQA.cxx
PWGPP/TOF/AliAnalysisTaskTOFqa.cxx
PWGPP/TOF/AliAnalysisTaskTOFqaID.cxx
PWGPP/TPC/AliPerformancePtCalib.cxx
PWGPP/TPC/AliPerformancePtCalibMC.cxx
PWGPP/TPC/AliPerformanceTPC.cxx
PWGPP/TPC/AliRecInfoMaker.cxx
PWGPP/TRD/AliTRDcheckESD.cxx
PWGPP/VZERO/AliAnaVZEROPbPb.cxx
PWGPP/global/AliAnalysisTaskGlobalQA.cxx
PWGPP/global/AliAnalysisTaskVertexESD.cxx
PWGPP/pid/AliAnalysisTaskK0sBayes.cxx
PWGPP/pid/AliAnalysisTaskLambdaBayes.cxx
PWGPP/pid/AliAnalysisTaskPhiBayes.cxx
PWGUD/CMakeLists.txt
PWGUD/CMakelibPWGUDdiffractive.pkg
PWGUD/DIFFRACTIVE/QA/AliAnalysisTaskCPQA.cxx
PWGUD/DIFFRACTIVE/QA/AliAnalysisTaskCPQA.h
PWGUD/DIFFRACTIVE/xsAndTwoProng/AliCDMesonTracks.cxx
PWGUD/PWGUDdiffractiveLinkDef.h
PWGUD/UPC/AliAnalysisTaskUpcK0sK0s.cxx
PWGUD/UPC/AliAnalysisTaskUpcPsi2s.cxx
PWGUD/selectors/dNdEta/AlidNdEtaTask.cxx
PWGUD/selectors/multiplicity/AliMultiplicityTask.cxx
PYTHIA6/CMakeLists.txt
PYTHIA8/CMakeLists.txt
RAW/AliHoughFilter.cxx
RAW/CMakeLists.txt
SHUTTLE/CMakeLists.txt
STARLIGHT/CMakeLists.txt
STAT/CMakeLists.txt
STEER/AOD/AliAODEvent.cxx
STEER/AOD/AliAODEvent.h
STEER/AOD/AliAODHandler.cxx
STEER/AOD/AliAODHeader.cxx
STEER/AOD/AliAODHeader.h
STEER/AOD/AliAODInputHandler.cxx
STEER/AOD/AliAODPWG4Particle.cxx
STEER/AOD/AliAODPWG4Particle.h
STEER/AOD/AliAODPWG4ParticleCorrelation.cxx
STEER/AOD/AliAODPWG4ParticleCorrelation.h
STEER/AOD/AliAODTagCreator.cxx
STEER/AOD/AliAODTrack.cxx
STEER/AOD/AliAODTrack.h
STEER/AOD/AliNanoAODHeader.cxx [moved from PWG/DevNanoAOD/AliNanoAODHeader.cxx with 100% similarity]
STEER/AOD/AliNanoAODHeader.h [new file with mode: 0644]
STEER/AOD/AliNanoAODStorage.cxx [moved from PWG/DevNanoAOD/AliNanoAODStorage.cxx with 100% similarity]
STEER/AOD/AliNanoAODStorage.h [moved from PWG/DevNanoAOD/AliNanoAODStorage.h with 100% similarity]
STEER/AOD/AliNanoAODTrackMapping.cxx [moved from PWG/DevNanoAOD/AliNanoAODTrackMapping.cxx with 100% similarity]
STEER/AOD/AliNanoAODTrackMapping.h [moved from PWG/DevNanoAOD/AliNanoAODTrackMapping.h with 100% similarity]
STEER/AODLinkDef.h
STEER/AliVertexerTracksTest.C
STEER/CMakeLists.txt
STEER/CMakelibAOD.pkg
STEER/CMakelibSTEERBase.pkg
STEER/CreateAODfromKineTree.C
STEER/ESD/AliCascadeVertexer.cxx
STEER/ESD/AliESD.cxx
STEER/ESD/AliESDEvent.cxx
STEER/ESD/AliESDRun.cxx
STEER/ESD/AliESDtrack.h
STEER/ESD/AliV0vertexer.cxx
STEER/ESD/AliVertex.h
STEER/ESD/AliVertexerTracks.cxx
STEER/STEER/AliESDTagCreator.cxx
STEER/STEER/AliGlobalQADataMaker.cxx
STEER/STEERBase/AliExternalTrackParam.cxx
STEER/STEERBase/AliExternalTrackParam.h
STEER/STEERBase/AliVAODHeader.cxx [new file with mode: 0644]
STEER/STEERBase/AliVAODHeader.h [new file with mode: 0644]
STEER/STEERBase/AliVHeader.h
STEER/STEERBase/AliVVertex.h
STEER/STEERBaseLinkDef.h
STRUCT/CMakeLists.txt
T0/AliAnalysisTaskT0QA.cxx
T0/AliT0AnalysisTaskQA.cxx
T0/CMakeLists.txt
TAmpt/CMakeLists.txt
TDPMjet/CMakeLists.txt
TEPEMGEN/CMakeLists.txt
TEvtGen/CMakeLists.txt
THbtp/CMakeLists.txt
THerwig/CMakeLists.txt
THijing/CMakeLists.txt
TOF/CMakeLists.txt
TPC/AliL1Delay.C
TPC/AliTPCCalibViewer.cxx
TPC/AliTPCCalibViewer.h
TPC/Base/AliTPCCalPad.cxx
TPC/Base/AliTPCCalPad.h
TPC/Base/AliTPCCalROC.cxx
TPC/Base/AliTPCCalROC.h
TPC/Base/AliTPCcalibDButil.cxx
TPC/Base/AliTPCcalibDButil.h
TPC/Base/test/UnitTest.C [new file with mode: 0644]
TPC/CMakeLists.txt
TPC/Rec/AliTPCtrack.cxx
TPC/fastSimul/AliTPCclusterFast.cxx
TPC/fastSimul/README.txt
TPC/fastSimul/simul.sh
TPC/macros/recTPC2007.C [deleted file]
TPC/scripts/calibPassX/README.PassX [deleted file]
TPC/scripts/calibPassX/mergeRecursiveMasked.sh [deleted file]
TPC/scripts/calibPassX/recPass0GSI.C [deleted file]
TPC/scripts/calibPassX/runPassX.sh [deleted file]
TPC/scripts/calibPassX/runPassXJob.sh [deleted file]
TPC/scripts/calibPassX/runTrainPassX.sh [deleted file]
TPC/scripts/calibPassX/submitPass0.sh [deleted file]
TPC/scripts/calibPassX/tpcPass0Env.sh [deleted file]
TPHIC/CMakeLists.txt
TRD/CMakeLists.txt
TRD/qaAnalysis/AliAnalysisTaskTRDmon.cxx
TRIGGER/CMakeLists.txt
TTherminator/CMakeLists.txt
TUHKMgen/CMakeLists.txt
VZERO/CMakeLists.txt
ZDC/CMakeLists.txt
cmake/ALICE_CMake.cmake
cmake/CMakeDA.cmake
cmake/CMakelinux.cmake
cmake/CMakelinuxalphagcc.cmake
cmake/CMakelinuxia64gcc.cmake
cmake/CMakelinuxx8664gcc.cmake
cmake/CMakelinuxx8664icc.cmake
cmake/FindAMORE.cmake
cmake/FindCPack.cmake
cmake/FindFASTJET.cmake
cmake/FindGEANT3.cmake
cmake/FindROOT.cmake
cmake/FindRuleChecker.cmake
cmake/Module.tmp
test/vmctest/scripts/efficiency/AliAnalysisTaskEfficiency.cxx

diff --git a/.DS_Store b/.DS_Store
new file mode 100644 (file)
index 0000000..240f978
Binary files /dev/null and b/.DS_Store differ
index aff82972cd5c178c266f6258a3e859e5e1cba298..01bed4fdc6928ac4fec08401c1efc355f537eae3 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index dec0c580d6b00e2f7c6221dbb9b1c9e0cf4678fd..7c9bc8b22aa67d094ff5392bbec459e1e8d8da6b 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 3859667da68fd59267cbae208ce6ccf118f9ec43..f470f64ba244dcd5ea22a4bc0ac47c27ad3740f7 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 2e68503b4a804304e4a8504ab04f09b5056d4dc7..7b8c04a885592f9affd8843aef159d7e2bc84125 100644 (file)
@@ -834,7 +834,9 @@ void AliAnalysisTaskPIDqa::FillTPCqa()
 
   // Get reference multiplicity for AODs
   if ( analysisType == "AOD" && fAODevent ) {
-    mult=fAODevent->GetHeader()->GetTPConlyRefMultiplicity();
+    AliAODHeader * header=dynamic_cast<AliAODHeader*>(fAODevent->GetHeader());
+    if(!header) AliFatal("Not a standard AOD");
+    mult=header->GetTPConlyRefMultiplicity();
   }
 
   /*if (mult < 0) {
index 074bdb390357d8d27078e28bae72a257d34ec204..34b2610d606ba91e64034ccedfb2858ee3ef2685 100644 (file)
@@ -55,7 +55,7 @@
 ClassImp(AliAnalysisTaskSE)
 
 ////////////////////////////////////////////////////////////////////////
-AliAODHeader*    AliAnalysisTaskSE::fgAODHeader         = NULL;
+AliVHeader*      AliAnalysisTaskSE::fgAODHeader         = NULL;
 AliTOFHeader*    AliAnalysisTaskSE::fgTOFHeader         = NULL;
 AliAODVZERO*     AliAnalysisTaskSE::fgAODVZERO          = NULL;
 TClonesArray*    AliAnalysisTaskSE::fgAODTracks         = NULL;
index e66753d07fb3c20c8774b9b794b58e1b86c42894..78aaaafd4668fc2163998bd3d062605a9c6d1e74 100644 (file)
@@ -88,7 +88,7 @@ class AliAnalysisTaskSE : public AliAnalysisTask
     // Output histos for QA
     TList*                fHistosQA;        //! Output histos for QA
     // Provisions for replication
-    static AliAODHeader*    fgAODHeader;        //! Header for replication
+    static AliVHeader*      fgAODHeader;        //! Header for replication
     static AliTOFHeader*    fgTOFHeader;        //! TOFHeader for replication
     static AliAODVZERO*     fgAODVZERO;         //! VZERO for replication
     static TClonesArray*    fgAODTracks;        //! Tracks for replication
index 8890165bc7b1bb1609a49e7a6f58e49131625bfb..15fef1d74d790c569be83fc2d1e99c70e2a99469 100644 (file)
@@ -114,7 +114,8 @@ Bool_t AliAnalysisUtils::IsFirstEventInChunk(AliVEvent *event)
 
   if(fisAOD){
     AliAODHeader *aodheader = 0x0;
-    aodheader = aod->GetHeader();
+    aodheader = dynamic_cast<AliAODHeader*>(aod->GetHeader());
+    if(!aodheader) AliFatal("Not a standard AOD");
     if(!aodheader){
       AliFatal("AOD header not there ?!");
       return kFALSE;
@@ -216,11 +217,11 @@ Bool_t AliAnalysisUtils::IsOutOfBunchPileUp(AliVEvent *event)
     AliFatal("Event is neither of AOD nor ESD type");
     return kFALSE;
   }
-  Int_t bc2 = (aod)?aod->GetHeader()->GetIRInt2ClosestInteractionMap():esd->GetHeader()->GetIRInt2ClosestInteractionMap();
+  Int_t bc2 = (aod)?((AliVAODHeader*)aod->GetHeader())->GetIRInt2ClosestInteractionMap():esd->GetHeader()->GetIRInt2ClosestInteractionMap();
   if (bc2 != 0)
     return kTRUE;
   
-  Int_t bc1 = (aod)?aod->GetHeader()->GetIRInt1ClosestInteractionMap():esd->GetHeader()->GetIRInt1ClosestInteractionMap();
+  Int_t bc1 = (aod)?((AliVAODHeader*)aod->GetHeader())->GetIRInt1ClosestInteractionMap():esd->GetHeader()->GetIRInt1ClosestInteractionMap();
   if (bc1 != 0)
     return kTRUE;
   
index bb06834bdefa358dd21e432ebd464bd92b0e4832..ee1e960c2d75ab48b2b4dd75d738ac4e47a31881 100644 (file)
@@ -1444,7 +1444,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     //nTracks    = event->GetNumberOfTracks();     
     nTracks    = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
   } else {
-    AliAODHeader *h = aod->GetHeader();
+    AliAODHeader *h = dynamic_cast<AliAODHeader*>(aod->GetHeader());
+    if(!h) AliFatal("Not a standard AOD");
     nTracks    = h!=0 ? (Short_t)h->GetTPConlyRefMultiplicity():-1;
   }
 
@@ -1468,7 +1469,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     Short_t nTrTPCcandle = 0;
     for (Int_t iTracks = 0; iTracks < aod->GetNumberOfTracks(); iTracks++) {
 
-      AliAODTrack* track = aod->GetTrack(iTracks);
+      AliAODTrack* track = dynamic_cast<AliAODTrack*>(aod->GetTrack(iTracks));
+      if(!track) AliFatal("Not a standard AOD");
 
       if (!track) continue;
       if (!track->TestFilterBit(1<<5) && 
@@ -1493,7 +1495,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   } else {
     AliAODTracklets *mult = aod->GetTracklets();
     nTracklets = mult->GetNumberOfTracklets();
-    AliAODHeader *h = aod->GetHeader();
+    AliAODHeader *h = dynamic_cast<AliAODHeader*>(aod->GetHeader());
+    if(!h) AliFatal("Not a standard AOD");
     for(Int_t ilay=0; ilay<6; ilay++){
       nClusters[ilay] = h->GetNumberOfITSClusters(ilay);
     }
@@ -1580,7 +1583,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     if (zpcFired) zpcTower = ZPCtower[0];
 
   } else {
-    AliAODHeader *h = aod->GetHeader();
+    AliAODHeader *h = dynamic_cast<AliAODHeader*>(aod->GetHeader());
+    if(!h) AliFatal("Not a standard AOD");
     zncEnergy  = (Float_t) (h->GetZDCN1Energy());
     zpcEnergy  = (Float_t) (h->GetZDCP1Energy());
     znaEnergy  = (Float_t) (h->GetZDCN2Energy());
index 601035b61be0cf64ddf3a4d00f37c5ee795093ba..df7e5914fd79222e7c5d5db0ece8a34a8e5734e6 100644 (file)
@@ -347,7 +347,8 @@ void AliEPSelectionTask::UserExec(Option_t */*option*/)
     if (aod){
 
       // get centrality of the event
-      AliAODHeader *header=aod->GetHeader();
+      AliAODHeader *header=dynamic_cast<AliAODHeader*>(aod->GetHeader());
+      if(!header) AliFatal("Not a standard AOD");
       AliCentrality *centrality=header->GetCentralityP();
       if(!centrality)  AliError(Form("No AliCentrality attached to AOD header"));
       fCentrality = centrality->GetCentralityPercentile("V0M");
@@ -365,7 +366,7 @@ void AliEPSelectionTask::UserExec(Option_t */*option*/)
        if (headerH) fRP = headerH->GetReactionPlaneAngle();
       }
   
-      esdEP = aod->GetHeader()->GetEventplaneP();
+      esdEP = header->GetEventplaneP();
       if(!esdEP) return; // protection against missing EP branch (nanoAODs)
       esdEP->Reset(); 
      
@@ -417,7 +418,8 @@ void AliEPSelectionTask::UserExec(Option_t */*option*/)
          }
        }
        
-       AliAODTrack* trmax = aod->GetTrack(0);
+       AliAODTrack* trmax = dynamic_cast<AliAODTrack*>(aod->GetTrack(0));
+       if(!trmax) AliFatal("Not a standard AOD");
        for (int iter = 1; iter<NT;iter++){
          AliAODTrack* track = dynamic_cast<AliAODTrack*> (tracklist->At(iter));
          if (track && (track->Pt() > trmax->Pt())) trmax = track;
@@ -881,7 +883,8 @@ TObjArray* AliEPSelectionTask::GetAODTracksAndMaxID(AliAODEvent* aod, Int_t& max
   Int_t ntpc = fESDtrackCuts->GetMinNClusterTPC(); 
   
   for (Int_t i = 0; i < aod->GetNumberOfTracks() ; i++){
-     tr = aod->GetTrack(i);
+     tr = dynamic_cast<AliAODTrack*>(aod->GetTrack(i));
+     if(!tr) AliFatal("Not a standard AOD");
      maxidtemp = tr->GetID(); 
      if(maxidtemp < 0 && fAODfilterbit != 128) continue;
      if(maxidtemp > -1 && fAODfilterbit == 128) continue;
index a3afe3ce5fe9e2c6b99c3b56d5167fcdcc6e9c28..280c3924f2e753558a01c83eff550fc002c4cdb2 100644 (file)
@@ -403,7 +403,7 @@ Bool_t AliTriggerAnalysis::IsOfflineTriggerFired(const AliESDEvent* aEsd, Trigge
     const AliESDVertex* vertex = aEsd->GetPrimaryVertexSPD();
     const AliMultiplicity* mult = aEsd->GetMultiplicity();
     
-    if (mult && vertex && vertex->GetNContributors() > 0 && (!vertex->IsFromVertexerZ() || vertex->GetDispersion() < 0.02) && TMath::Abs(vertex->GetZv()) < 5.5)    {
+    if (mult && vertex && vertex->GetNContributors() > 0 && (!vertex->IsFromVertexerZ() || vertex->GetDispersion() < 0.02) && TMath::Abs(vertex->GetZ()) < 5.5)    {
       for (Int_t i=0; i<mult->GetNumberOfTracklets(); ++i) {
         if (TMath::Abs(mult->GetEta(i)) < 1) {
           decision = kTRUE;
@@ -423,7 +423,7 @@ Bool_t AliTriggerAnalysis::IsOfflineTriggerFired(const AliESDEvent* aEsd, Trigge
     fEsdTrackCuts->GetPtRange(ptmin,ptmax);
     AliDebug(3, Form("ptmin = %f, ptmax = %f\n",ptmin, ptmax));
     
-    if (vertex && vertex->GetNContributors() > 0 && (!vertex->IsFromVertexerZ() || vertex->GetDispersion() < 0.02) && TMath::Abs(vertex->GetZv()) < 10.) {
+    if (vertex && vertex->GetNContributors() > 0 && (!vertex->IsFromVertexerZ() || vertex->GetDispersion() < 0.02) && TMath::Abs(vertex->GetZ()) < 10.) {
       AliDebug(3,Form("Check on the vertex passed\n"));
       for (Int_t i=0; i<aEsd->GetNumberOfTracks(); ++i){
         if (fTPCOnly == kFALSE){
index 209f6fd16b99a20ea8f9b892a33fa78f0165655b..3b19633a7d2107a3e06a436e6641c8ec697f47a8 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 2b65c99e3c2b354ff6977906510fd9e4ea910715..5e1d52d88f1ef09bef518a263854c3d08bd2fafa 100644 (file)
@@ -367,7 +367,8 @@ AliAODHeader* AliAnalysisTaskESDfilter::ConvertHeader(const AliESDEvent& esd)
 
   AliCodeTimerAuto("",0);
   
-  AliAODHeader* header = AODEvent()->GetHeader();
+  AliAODHeader* header = dynamic_cast<AliAODHeader*>(AODEvent()->GetHeader());
+  if(!header) AliFatal("Not a standard AOD");
   
   header->SetRunNumber(esd.GetRunNumber());
   header->SetOfflineTrigger(fInputHandler->IsEventSelected()); // propagate the decision of the physics selection
@@ -599,7 +600,7 @@ void AliAnalysisTaskESDfilter::ConvertCascades(const AliESDEvent& esd)
                                                                 vCascade,
                                                                 kTRUE,  // usedForVtxFit = kFALSE ? FIXME
                                                                 vtx->UsesTrack(esdCascadeBach->GetID()),
-                                                                AliAODTrack::kSecondary,
+                                                                AliAODTrack::kFromDecayVtx,
                                                                 selectInfo);
       aodTrack->SetPIDForTracking(esdCascadeBach->GetPIDForTracking());
       aodTrack->SetTPCFitMap(esdCascadeBach->GetTPCFitMap());
@@ -680,7 +681,7 @@ void AliAnalysisTaskESDfilter::ConvertCascades(const AliESDEvent& esd)
                                                                   vV0FromCascade,
                                                                   kTRUE,  // usedForVtxFit = kFALSE ? FIXME
                                                                   vtx->UsesTrack(esdCascadePos->GetID()),
-                                                                  AliAODTrack::kSecondary,
+                                                                  AliAODTrack::kFromDecayVtx,
                                                                   selectInfo);
        aodTrack->SetPIDForTracking(esdCascadePos->GetPIDForTracking());
         aodTrack->SetTPCFitMap(esdCascadePos->GetTPCFitMap());
@@ -732,7 +733,7 @@ void AliAnalysisTaskESDfilter::ConvertCascades(const AliESDEvent& esd)
                                                                   vV0FromCascade,
                                                                   kTRUE,  // usedForVtxFit = kFALSE ? FIXME
                                                                   vtx->UsesTrack(esdCascadeNeg->GetID()),
-                                                                  AliAODTrack::kSecondary,
+                                                                  AliAODTrack::kFromDecayVtx,
                                                                   selectInfo);
        aodTrack->SetPIDForTracking(esdCascadeNeg->GetPIDForTracking());
         aodTrack->SetTPCFitMap(esdCascadeNeg->GetTPCFitMap());
@@ -949,7 +950,7 @@ void AliAnalysisTaskESDfilter::ConvertV0s(const AliESDEvent& esd)
                                                                    vV0,
                                                                    kTRUE,  // check if this is right
                                                                    vtx->UsesTrack(esdV0Pos->GetID()),
-                                                                   AliAODTrack::kSecondary,
+                                                                   AliAODTrack::kFromDecayVtx,
                                                                    selectInfo);
            aodTrack->SetPIDForTracking(esdV0Pos->GetPIDForTracking());
            aodTrack->SetTPCFitMap(esdV0Pos->GetTPCFitMap());
@@ -996,7 +997,7 @@ void AliAnalysisTaskESDfilter::ConvertV0s(const AliESDEvent& esd)
                                                              vV0,
                                                              kTRUE,  // check if this is right
                                                              vtx->UsesTrack(esdV0Neg->GetID()),
-                                                             AliAODTrack::kSecondary,
+                                                             AliAODTrack::kFromDecayVtx,
                                                              selectInfo);
       aodTrack->SetPIDForTracking(esdV0Neg->GetPIDForTracking());
       aodTrack->SetTPCFitMap(esdV0Neg->GetTPCFitMap());
@@ -1780,7 +1781,7 @@ void AliAnalysisTaskESDfilter::ConvertKinks(const AliESDEvent& esd)
                                                                    vkink,
                                                                    kTRUE, // check if this is right
                                                                    vtx->UsesTrack(esdTrack->GetID()),
-                                                                   AliAODTrack::kSecondary,
+                                                                   AliAODTrack::kFromDecayVtx,
                                                                    selectInfo);
            daughter->SetPIDForTracking(esdTrackD->GetPIDForTracking());
             daughter->SetTPCFitMap(esdTrackD->GetTPCFitMap());
index 9a628acc9adcd458b005b0d5223b176fe17928f5..78c3a062b48d24888f8935f67d499a90845b4022 100644 (file)
@@ -351,6 +351,8 @@ void AliPHOSTenderSupply::ProcessEvent()
       DistanceToBadChannel(mod,&locPos,minDist);
       clu->SetDistanceToBadChannel(minDist) ;
 
+      Double_t ecross = EvalEcross(&cluPHOS);  
+      clu->SetMCEnergyFraction(ecross) ;
     }
   }
   else{//AOD
@@ -429,6 +431,9 @@ void AliPHOSTenderSupply::ProcessEvent()
       Double_t minDist=clu->GetDistanceToBadChannel() ;//Already calculated
       DistanceToBadChannel(mod,&locPos,minDist);
       clu->SetDistanceToBadChannel(minDist) ;
+
+      Double_t ecross = EvalEcross(&cluPHOS);  
+      clu->SetMCEnergyFraction(ecross) ;      
     }
   }
 
index 5db128d3a71ccdb474fd36dc056c5bef9a139597..1dce0b0590607a9c72c92b9922e5b68167b09d4a 100644 (file)
@@ -1,37 +1,73 @@
-AliGenerator *AddMCGenAmpt()
+AliGenerator *AddMCGenAmpt(
+                          Double_t Energy      = 2760.,   // CM energy 
+                          Double_t bmin        = 0.0,     // minimum impact parameter
+                          Double_t bmax        = 20.0,    // maximum impact parameter
+                          Double_t ptHardMin   = 3.0,     // minimum pt hard (was 3.0 in previous AMPT productions)
+                          Bool_t stringMelting = kTRUE,   // string melting option 
+                          Bool_t useART        = kTRUE   // use hadronic rescattering phase (ART)
+                          )
 {
-// User defined generator
+  // User defined generator
 
   gSystem->Load("libampt.so");       
   gSystem->Load("libTAmpt.so");
+  gSystem->Load("libEGPythia6"); 
+  gSystem->Load("libpythia6.so");
+  gSystem->Load("libAliPythia6.so");
+
 
   AliGenAmpt *genAMPT = new AliGenAmpt(-1);
+  //=========================================================================
+
+
+  // User settings
+  Int_t Flag_SM    = 4;       // flag for string melting: 1 = default, 4 = String Melting
+  Int_t NTmax      = 150;     // NTMAX: number of timesteps (Default = 150), to turn off ART set it to 3
+  Double_t mu      = 3.2264;  // parton screening mass in fm^(-1) (Default = 3.2264)
+  Double_t alpha_s = 1./3.;   // change mu and alpha_s (Default = 1./3.) to vary scattering cross-section
+                              // mu = 3.2 fm^-1 and alpha_s = 0.33 ==> sigma_{partonic} = 1.5mb
+  if(!stringMelting)
+    Flag_SM = 1;
+  
+  if(!useART)
+    NTmax = 3;
+  //=========================================================================
+
+
+  // Decayer
+  AliDecayer *decayer = new AliDecayerPythia();
+  genAMPT->SetForceDecay( kHadronicD );
+  genAMPT->SetDecayer( decayer );
+  //=========================================================================
 
-  // will be made optional later
-  genAMPT->SetEnergyCMS(2760);
+  // Collision system
+  genAMPT->SetEnergyCMS(Energy);
   genAMPT->SetReferenceFrame("CMS");
   genAMPT->SetProjectile("A", 208, 82);
   genAMPT->SetTarget    ("A", 208, 82);
-  genAMPT->SetPtHardMin (2);
-  genAMPT->SetImpactParameterRange(0.00,20.00);
-  genAMPT->SetJetQuenching(0); // enable jet quenching
-  genAMPT->SetShadowing(1);    // enable shadowing
-  genAMPT->SetDecaysOff(1);    // neutral pion and heavy particle decays switched off
-  genAMPT->SetSpectators(0);   // track spectators 
-  genAMPT->SetIsoft(4);        // 4=string melting, 1=standard AMPT
-  genAMPT->SetXmu(3.2264);     // parton xsection
-  genAMPT->SetNtMax(150);      // time bins
-  
-  genAMPT->SetAlpha(1./3.);    //alpha =0.333
-  genAMPT->SetStringFrag(0.5,0.9); //string fragmentation parameters
-  genAMPT->SetIpop(1); //enable popcorn mechanism (net-baryon stopping)
-  // This particular choice of gives scattering cross section to be 1.5 mb
+  genAMPT->SetPtHardMin (ptHardMin);
+  genAMPT->SetImpactParameterRange(bmin,bmax);
+  //=========================================================================
+
+  // options
+  genAMPT->SetJetQuenching(0);     // enable jet quenching
+  genAMPT->SetShadowing(1);        // enable shadowing
+  genAMPT->SetDecaysOff(1);        // neutral pion and heavy particle decays switched off
+  genAMPT->SetSpectators(0);       // track spectators 
+  genAMPT->SetIsoft(Flag_SM);      // 4=string melting, 1=standard AMPT
+  genAMPT->SetXmu(mu);             // parton xsection
+  genAMPT->SetNtMax(NTmax);        // time bins
+  genAMPT->SetAlpha(alpha_s);      // alpha =0.333
+  genAMPT->SetStringFrag(0.5,0.9); // string fragmentation parameters
+  genAMPT->SetIpop(1);             // enable popcorn mechanism (net-baryon stopping)
+  //=========================================================================
 
+  // Boost into LHC lab frame
+  genAMPT->SetBoostLHC(1);
+  
+  // randomize reaction plane
   genAMPT->SetRandomReactionPlane(kTRUE);
 
  return genAMPT;
 
-
-
-
 }
index b1a8b99c31b0149009a33276c1bd0d54111e1758..95572c6d8286382dedcddc7c33d932120c59d8c4 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 0aa1d8d2deffad3dae33dd111dc06ce967e1bbc6..be1159d7ac393dcaed2b674c88aba365b3ad116b 100644 (file)
@@ -6,7 +6,7 @@
 #         Port of previous Makefile build to cmake
 
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 #--------------------------------------------------------------------------------#
 # Set Basic CMake Configuration                                                  #
index b0a43cf5ce50b95e0116fe5be59fc42ebd203dba..3ef9734faaa0c443d17c9688d8a261468eecf564 100644 (file)
@@ -249,9 +249,9 @@ void AliCFEventRecCuts::SelectionBitMap(TObject* obj) {
     // Pick up the position and uncertainties
     
     Double_t vtxPos[3];
-    vtxPos[0] = vtxESD->GetXv();
-    vtxPos[1] = vtxESD->GetYv();
-    vtxPos[2] = vtxESD->GetZv();
+    vtxPos[0] = vtxESD->GetX();
+    vtxPos[1] = vtxESD->GetY();
+    vtxPos[2] = vtxESD->GetZ();
     
     Double_t vtxRes[3];
     vtxRes[0] = vtxESD->GetXRes();
@@ -312,9 +312,9 @@ void AliCFEventRecCuts::FillHistograms(TObject* obj, Bool_t b)
   // Require the vertex to have been reconstructed successfully
   if (strcmp(vtxESD->GetName(), "default")==0)return;
   // vertex position and uncertainties
-  fhQA[kVtxPosX] [index]->Fill(vtxESD->GetXv());
-  fhQA[kVtxPosY] [index]->Fill(vtxESD->GetYv());
-  fhQA[kVtxPosZ] [index]->Fill(vtxESD->GetZv());
+  fhQA[kVtxPosX] [index]->Fill(vtxESD->GetX());
+  fhQA[kVtxPosY] [index]->Fill(vtxESD->GetY());
+  fhQA[kVtxPosZ] [index]->Fill(vtxESD->GetZ());
   fhQA[kVtxResX] [index]->Fill(vtxESD->GetXRes());
   fhQA[kVtxResY] [index]->Fill(vtxESD->GetYRes());
   fhQA[kVtxResZ] [index]->Fill(vtxESD->GetZRes());
index a5c191751471ac3b3d951c52c5515172a885309b..524e502fdad27c97ced505dfb24ec6b96502a067 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index ca8d8125701b79d14c97d05bf8873be9739270a0..493d4472d99764fc54b56f0d8ee3f2bfc097bd6e 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 9de6d54e8e45e63cdb9640142904bd0a5fabe2a8..76f0925e32910f08bf0208d93536ffe79a26c1ed 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 7a46f16658ab24051d1a7d5a2f24ceffe1be6084..d44a4f9db099051a7fda453a95ba4507dc1ccfa8 100644 (file)
@@ -1808,7 +1808,8 @@ void AliEMCALRecoUtils::FindMatches(AliVEvent *event,
     //If the input event is AOD, the starting point for extrapolation is at vertex
     //AOD tracks are selected according to its filterbit.
     else if (aodevent) {
-      aodTrack = aodevent->GetTrack(itr);
+      aodTrack = dynamic_cast<AliAODTrack*>(aodevent->GetTrack(itr));
+      if(!aodTrack) AliFatal("Not a standard AOD");
       if (!aodTrack) continue;
             
       if (fAODTPCOnlyTracks) { // Match with TPC only tracks, default from May 2013, before filter bit 32
index 7256b1c661c15af30740b7101f3f17e3e255103e..630276481508e528b26acbad5f83767c4ca74bcc 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index f1507ab8debf8062b1c2df2999f9627cb70c8531..69fb62fb545a300d5cefc257ae82df7c996de40b 100644 (file)
@@ -1,5 +1,5 @@
-\section{EMCAL geometry software - Marco +++}
-
+\section{EMCAL geometry software}
+(Marco Bregant, Alexandre Shabetai, Gustavo Conesa Balbastre)\\
 
 This page is intended for a description of the EMCAL geometry and the methods to access it.  
 {\it This is a very preliminary version that needs work.}
@@ -8,32 +8,34 @@ This page is intended for a description of the EMCAL geometry and the methods to
 
 The EMCAL geometry is implemented in several classes : {\color{red} (right now very brief description, it should be completed) }
 \begin{itemize}
-\item AliEMCALGeoUtils: Steering geometry class.  No dependencies on STEER or EMCAL non geometry classes. Can be called during the analysis without loading all aliroot classes.
-\item AliEMCALGeometry: Derives from AliEMCALGeoUtils, contains dependencies on other EMCAL classes (AliEMCALRecPoint).
+\item AliEMCALGeometry: Steering geometry class.  No dependencies on STEER or EMCAL non geometry classes. Can be called during the analysis without loading all AliRoot classes.
 \item AliEMCALEMCGeometry: Does the geometry initialization. Does all the definitions of the geometry (towers composition, size, Super Modules number ...)
 \item AliEMCALGeoParams:  Class container of some of the geometry parameters so that it can be accessed everywhere in the EMCAL code, to avoid "magic numbers". Its use has to be propagated to all the code.
 \item AliEMCALShishKebabTrd1Module: Here the modules are defined and the position of the modules in the local super module reference system is calculated
 \end{itemize}
 
 \subsection{Accessing the geometry}
-One can get the geometry pointer in the following ways:
-\begin{itemize}
-\item If galice.root is available:
+One can get the geometry pointer in the following way:
+
+%\begin{DDbox}{\linewidth}
+\begin{lstlisting}
+AliEMCALGeometry * geom =  AliEMCALGeometry::GetInstance(GeoName) ;
+\end{lstlisting}
+%\end{DDbox}
+
+where "GeoName" is a string, the different options are specified in the next section. If you have a already generated simulation file and want to access the geometry used there, if the file {\it galice.root} is available:
 
 \begin{DDbox}{\linewidth}
 \begin{lstlisting}
 AliRunLoader *rl = AliRunLoader::Open("galice.root",AliConfig::GetDefaultEventFolderName(),"read"); 
 rl->LoadgAlice();//Needed to get geometry
-AliEMCALLoader *emcalLoader = dynamic\_cast<AliEMCALLoader*>(rl->GetDetectorLoader("EMCAL"));
+AliEMCALLoader *emcalLoader = dynamic_cast<AliEMCALLoader*>(rl->GetDetectorLoader("EMCAL"));
 AliRun * alirun = rl->GetAliRun();
 AliEMCAL * emcal = (AliEMCAL*)alirun->GetDetector("EMCAL"); AliEMCALGeometry * geom = emcal->GetGeometry();
-else, if galice.root is not available:
-AliEMCALGeometry * geom =  AliEMCALGeometry::GetInstance("EMCAL_COMPLETE") ;
-
 \end{lstlisting}
 \end{DDbox}
-\end{itemize}
-In this case you might need the file geometry.root if you want to access to certain methods that require local to global position transformations. This file can be generated doing a simple simulation, it just contains the transformation matrix to go from global to local.
+
+In this case you might need the file {\it geometry.root} if you want to access to certain methods that require local to global position transformations. This file can be generated doing a simple simulation, it just contains the transformation matrix to go from global to local.
 
 The way to load this file is:
 %\begin{DDbox}{\linewidth}
@@ -42,15 +44,13 @@ TGeoManager::Import("geometry.root");
 \end{lstlisting}
 %\end{DDbox}
 
-The transformation matrices are also stored in the ESDs so if you do not load this file, you can have to load these matrices from the ESDs.
+The transformation matrices are also stored in the ESDs so if you do not load this file, you can have to load these matrices from the ESDs. They are also stored in the OADB.
 
- If you want to see different parameters used in the geometry printed (cells centers, distance to IP, etc), one just has to execute the method PrintGeometry().
+ If you want to see different parameters used in the geometry printed (cells centers, distance to IP, etc), one just has to execute the method {\it PrintGeometry()}.
  
 \subsection{Geometry configuration options}
 Right now the following geometry options are implemented:
 \begin{itemize}
-\item EMCAL\_COMPLETE: 12 Super Modules (2 half Super Modules)
-\item EMCAL\_FIRSTYEAR: 4 Super Modules (year 2010)
 \item EMCAL\_FIRSTYEARV1: 4 Super Modules, corrected geometry (year 2010)
 \item EMCAL\_COMPLETEV1: 10 Super Modules, corrected geometry (year 2011)
 \item EMCAL\_COMPLETE12SMV1: 12 Super Modules (10+2$\times$1/3), corrected geometry (year 2012), full EMCal
@@ -59,14 +59,37 @@ Right now the following geometry options are implemented:
 \item EMCAL\_COMPLETE12SMV1\_DCAL\_DEV: Full EMCal plus  10 DCal super-modules (possible future configuration).
 \end{itemize}
 
-Other options exists but need to be removed as they {\bf should not be used}:
+Other options exists but need to be removed as they {\bf should not be used} or that should be avoided:
 \begin{itemize}
 \item EMCAL\_PDC06: Old geometry, for reading old data (which do not exist anymore).
 \item EMCAL\_WSU: Prototype geometry. 
+\item EMCAL\_COMPLETE: 12 Super Modules (2 half Super Modules). Use the option with "V1" in the name.
+\item EMCAL\_FIRSTYEAR: 4 Super Modules (year 2010). Use the option with "V1" in the name.
 \end{itemize}
 
 By default, the geometry is loaded with the EMCAL\_COMPLETE12SMV1 configuration. For details on the implementation of the DCal geometry have a look here~\cite{DCalGeoOff}
  
+ \subsection{Setting the geometry in simulations}
+
+When configuring a simulation, a typical file {\it Config.C} is used. Inside this file, the detectors to be used in the generation are specified, and particularly EMCal is initialized in this way:
+
+\begin{lstlisting}
+AliEMCAL *EMCAL =  = new AliEMCALv2("EMCAL", TString GeoName, Bool_t checkGeoRun);
+\end{lstlisting}
+
+Where:
+\begin{itemize}
+  \item {\it AliEMCAL} is the main steering class for the simulation. The derived classes {\t AliEMCALvX}:
+    \begin{itemize}
+    \item {\it AliEMCALv0} does the geometry initialization, materials creation etc.
+    \item {\it AliEMCALv1} derives from {\it v0}, DO NOT USE for simulation, originally it was meant for fast simulations, it does not generate hits.
+    \item {\it AliEMCALv2} derives from {\it v1}, USE for simulation. It does all the particle propagation in the EMCal material
+\end{itemize}
+  \item {\it TString GeoName}: Geometry names listed in the previous section
+  \item {\it Bool\_t checkGeoRun}: Bool that activates the geometry initialization depending on the run number. Since EMCal geometry changed over time, to avoid mistakes in the configuration files of simulations anchored to particular run numbers,  by default this is set to TRUE and the name set in the initialization of AliEMCAL is not taken into account but the one corresponding to this run.
+\end{itemize}
+
  \subsection{Mapping}
 The tower row/column mapping online and offline follows the alice numbering convention. Figures~\ref{fig:Map1} to \ref{fig:Map2} display the position of the super modules from different points of view and the position of the tower index in them.
 
@@ -103,7 +126,7 @@ Each EMCAL supermodule is composed of 24x48 towers (phi,eta), grouped in 4x4 mod
 
 \begin{DDbox}{\linewidth}
 \begin{lstlisting}
-Int\_t nSupMod, nModule, nIphi, nIeta, iphi, ieta;
+Int_t nSupMod, nModule, nIphi, nIeta, iphi, ieta;
 //Check if this absId exists
 if(!CheckAbsCellId(absId)) return kFALSE;
 // Get from the absId the super module number, the module number and the eta-phi index (0 or 1) in the module
@@ -136,7 +159,7 @@ absid = GetAbsCellId(nSupMod, nModule, nIphi, nIeta);
 \begin{DDbox}{\linewidth}
 \begin{lstlisting}
 
-Int\_t   GetSuperModuleNumber(Int\_t absId)  
+Int_t   GetSuperModuleNumber(Int_t absId)  
 \end{lstlisting}
 \end{DDbox}
 \end{itemize}
@@ -148,11 +171,11 @@ To correlate the tower index and its position in local coordinates, the followin
 
 \begin{DDbox}{\linewidth}
 \begin{lstlisting}
-  Bool\_t  AliEMCALGeoUtils::RelPosCellInSModule(Int\_t absId, Double\_t \&xr, Double\_t \&yr, Double\_t \&zr) const;
+  Bool_t  AliEMCALGeoUtils::RelPosCellInSModule(Int_t absId, Double_t &xr, Double_t &yr, Double_t &zr) const;
 
-  Bool\_t  AliEMCALGeoUtils::RelPosCellInSModule(Int\_t absId, Double\_t loc[3]) const;
+  Bool_t  AliEMCALGeoUtils::RelPosCellInSModule(Int_t absId, Double_t loc[3]) const;
 
-  Bool\_t  AliEMCALGeoUtils::RelPosCellInSModule(Int\_t absId, TVector3 \&vloc) const;
+  Bool_t  AliEMCALGeoUtils::RelPosCellInSModule(Int_t absId, TVector3 &vloc) const;
 \end{lstlisting}
 \end{DDbox}
 
@@ -189,7 +212,7 @@ First we calculate the cell position with the  method
 
 \begin{DDbox}{\linewidth}
 \begin{lstlisting}
-AliEMCALGeometry::RelPosCellInSModule(Int\_t absId, Int\_t maxAbsId, Double\_t tmax, Double\_t \&xr, Double\_t \&yr, Double\_t \&zr)
+AliEMCALGeometry::RelPosCellInSModule(Int_t absId, Int_t maxAbsId, Double_t tmax, Double_t &xr, Double_t &yr, Double_t &zr)
 \end{lstlisting}
 \end{DDbox}
 
@@ -206,15 +229,15 @@ In this particular case the position calculation per tower depends on the positi
 
 \begin{DDbox}{\linewidth}
 \begin{lstlisting}
-  Double\_t AliEMCALRecPoint::TmaxInCm(const Double\_t e){
+  Double\t AliEMCALRecPoint::TmaxInCm(const Double_t e){
 
       //e: energy sum of cells
 
-static Double\_t ca = 4.82;// shower max parameter - first guess; ca=TMath::Log(1000./8.07)
+static Double_t ca = 4.82;// shower max parameter - first guess; ca=TMath::Log(1000./8.07)
 
-      static Double\_t x0 = 1.23; // radiation lenght (cm)
+      static Double_t x0 = 1.23; // radiation lenght (cm)
 
-      static Double\_t tmax = 0.; // position of electromagnetic shower max in cm
+      static Double_t tmax = 0.; // position of electromagnetic shower max in cm
 
       tmax = TMath::Log(e) + ca+0.5;
 
@@ -228,7 +251,7 @@ After the cells position of the cluster is accessed, the position of the cluster
 
 \begin{DDbox}{\linewidth}
 \begin{lstlisting}
-  w(cell i) = TMath::Max( 0., logWeight + TMath::Log( energy[cell i] / summed\_cluster\_cell\_energy ));
+  w(cell i) = TMath::Max( 0., logWeight + TMath::Log( energy[cell i] / summed_cluster_cell_energy ));
 \end{lstlisting}
 \end{DDbox}
 
@@ -254,13 +277,13 @@ To transform from local to global we have the methods
 \begin{DDbox}{\linewidth}
 \begin{lstlisting}
 
-  void GetGlobal(const Double\_t *loc, Double\_t *glob, int ind) const;
+  void GetGlobal(const Double_t *loc, Double_t *glob, int ind) const;
 
-  void GetGlobal(const TVector3 \&vloc, TVector3 \&vglob, int ind) const;
+  void GetGlobal(const TVector3 &vloc, TVector3 &vglob, int ind) const;
 
-  void GetGlobal(Int\_t absId, Double\_t glob[3]) const;
+  void GetGlobal(Int_t absId, Double_t glob[3]) const;
 
-  void GetGlobal(Int\_t absId, TVector3 \&vglob) const;
+  void GetGlobal(Int_t absId, TVector3 &vglob) const;
 \end{lstlisting}
 \end{DDbox}
 
@@ -288,15 +311,15 @@ if(m) m->LocalToMaster(loc, glob);
 
 \begin{DDbox}{\linewidth}
 \begin{lstlisting}
-void    EtaPhiFromIndex(Int\_t absId, Double\_t \&eta, Double\_t \&phi) const;
-void    EtaPhiFromIndex(Int\_t absId, Float\_t \&eta, Float\_t \&phi) const;
+void    EtaPhiFromIndex(Int_t absId, Double_t &eta, Double_t &phi) const;
+void    EtaPhiFromIndex(Int_t absId, Float_t &eta, Float_t &phi) const;
 \end{lstlisting}
 \end{DDbox}
 \item Print information of the cells. For "pri>0" returns more information. "tit" has not much use, this value is printed.
 
 \begin{DDbox}{\linewidth}
 \begin{lstlisting}
-void PrintCellIndexes(Int\_t absId, int pri, const char *tit)
+void PrintCellIndexes(Int_t absId, int pri, const char *tit)
 \end{lstlisting}
 \end{DDbox}
 \end{itemize} 
index d8fe61f3b11a2f50b3719e92e01eb704d0c57993..297ec4687225295ea1baf6dcdaf98007a80cbd21 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index eaa9741ada07be8844dfd2e72ec607abbae0458e..541f091974af674554542fdc99b31ecc380d82c5 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 51691dc88901541e308edc0f074a2e408c5bbf65..0064e026802d98188779a9f1178d549a44f50e8f 100644 (file)
@@ -357,16 +357,16 @@ void AliEveMUONTrack::PrintESDTrackInfo()
 
   AliESDVertex* spdVertex = (AliESDVertex*) esd->GetVertex();
   if (spdVertex->GetNContributors()) {
-    spdVertexZ = spdVertex->GetZv();
-    spdVertexY = spdVertex->GetYv();
-    spdVertexX = spdVertex->GetXv();
+    spdVertexZ = spdVertex->GetZ();
+    spdVertexY = spdVertex->GetY();
+    spdVertexX = spdVertex->GetX();
   }
 
   AliESDVertex* esdVertex = (AliESDVertex*) esd->GetPrimaryVertex();
   if (esdVertex->GetNContributors()) {
-    esdVertexZ = esdVertex->GetZv();
-    esdVertexY = esdVertex->GetYv();
-    esdVertexX = esdVertex->GetXv();
+    esdVertexZ = esdVertex->GetZ();
+    esdVertexY = esdVertex->GetY();
+    esdVertexX = esdVertex->GetX();
   }
 
   Float_t t0v = esd->GetT0zVertex();
index 99800e0ef9fee61431bd12fe59d3fa9a22e7ff34..dd034635732fde0c33e7eb0d4460b8e5380a8e62 100644 (file)
@@ -57,7 +57,7 @@ AliEveV0* esd_make_v0(TEveTrackPropagator* rnrStyle, AliESDVertex* primVtx,
   v0->GetParamN()->GetXYZ(v);  rcV0.fVNeg.Set(v);
   v0->GetParamP()->GetXYZ(v);  rcV0.fVPos.Set(v);
 
-  rcV0.fV0Birth.Set(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
+  rcV0.fV0Birth.Set(primVtx->GetX(), primVtx->GetY(), primVtx->GetZ());
 
   // Simulation data not directly available in AliESDv0
   //rcV0.fDLabel[0] = v0->GetNindex();
index 8abb943306262cdb378376fe08e88e6c3ec1535e..13a917c8bfce2910316fff6fcbd591f72360afc3 100644 (file)
@@ -48,7 +48,7 @@ AliEveCascade* esd_make_cascade(TEveTrackPropagator* rnrStyle, AliESDVertex* pri
   cascade->GetParamN()->GetXYZ(v);  rcV0.fVNeg.Set(v);
   cascade->GetParamP()->GetXYZ(v);  rcV0.fVPos.Set(v);
 
-  rcV0.fV0Birth.Set(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
+  rcV0.fV0Birth.Set(primVtx->GetX(), primVtx->GetY(), primVtx->GetZ());
 
   Double_t pCascade[3]={0.}, pBac[3]={0.}, pNeg[3]={0.}, pPos[3]={0.}, cv[21]={0.};
   //cascade->GetPxPyPz(pCascade[0], pCascade[1], pCascade[2]);
@@ -79,7 +79,7 @@ AliEveCascade* esd_make_cascade(TEveTrackPropagator* rnrStyle, AliESDVertex* pri
   cascade->GetXYZcascade(v[0], v[1], v[2]);
   rcCascade.fCascadeVCa.Set(v);
 
-  rcCascade.fCascadeBirth.Set(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
+  rcCascade.fCascadeBirth.Set(primVtx->GetX(), primVtx->GetY(), primVtx->GetZ());
 
   // Simulation data not directly available in AliESDcascade
   // rcCascade.fDLabel = cascade->GetBindex();
@@ -124,9 +124,9 @@ AliEveCascade* esd_make_cascade(TEveTrackPropagator* rnrStyle, AliESDVertex* pri
                                        cascade->Phi()   * 180/TMath::Pi(),
                                        cascade->Theta() * 180/TMath::Pi(),
                                        cascade->GetDcaXiDaughters(),
-                                       cascade->GetCascadeCosineOfPointingAngle(primVtx->GetXv(),
-                                                                                primVtx->GetYv(),
-                                                                                primVtx->GetZv()),
+                                       cascade->GetCascadeCosineOfPointingAngle(primVtx->GetX(),
+                                                                                primVtx->GetY(),
+                                                                                primVtx->GetZ()),
                                        cascade->GetEffMassXi()
                                 )
                            );
index a19e6d3997078c55a08b70ece38cf7f29f954134..9f6f644794c6adbe90b8dc2afc012768f6365648 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 6030b516effd4f965e4f3d5837055ad706977481..a5f2cb86ad46701105dcb99b5718ad85fe2fce30 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 0ee740638cf44bfe6b1acb02dd09d63a1de5a5bd..369864abcd6f7ec456514b6adb67ecf226298bce 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 7b295f2e1de69517024350ec6f2e18c57fa5df15..d852b6147e5d871cdb317f23e92a961ee89c5643 100644 (file)
@@ -229,8 +229,8 @@ AliFMDReconstructor::GetVertex(AliESDEvent* esd) const
 
   if (vertex) {
     AliFMDDebug(2, ("Got %s (%s) from ESD: %f", 
-                   vertex->GetName(), vertex->GetTitle(), vertex->GetZv()));
-    fCurrentVertex = vertex->GetZv();
+                   vertex->GetName(), vertex->GetTitle(), vertex->GetZ()));
+    fCurrentVertex = vertex->GetZ();
     fVertexType    = kESDVertex;
     return;
   }
index 95f89ae414f2723d716713e83f6903cc22bfc788..85f391145687e3ba97d706f7c7415c611c7097b2 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index ddcaecd4a4e0693eb936681cf883fb7b490eaf7e..402e290e7d253393735aec5d3d1b2cf7d8195e9c 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index ca8d8125701b79d14c97d05bf8873be9739270a0..493d4472d99764fc54b56f0d8ee3f2bfc097bd6e 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index abd4eeeb6fa1ca4bc5609debc5ec63774bc70391..757049b6a375804b80353c49a90957d8f4d378c8 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 option(HLT_CUDA   "Build HLT GPU tracker using CUDA"   OFF)
 option(HLT_OPENCL "Build HLT GPU tracker using OpenCL" OFF)
index 37041bdab394c6826e80e5ead91c7bb37382b907..b3b1fe32ebbd023429135e8cfa58eb6e074021b6 100644 (file)
@@ -431,7 +431,7 @@ void AliAnalysisTaskHLT::UserExec(Option_t *){
  
 //     Float_t dca[2];
 //     if(vertHLT->GetStatus()==kTRUE){
-//        esdtrackHLT->GetDZ(esdHLT->GetPrimaryVertex()->GetXv(), esdHLT->GetPrimaryVertex()->GetYv(), esdHLT->GetPrimaryVertex()->GetZv(), bfield, dca);
+//        esdtrackHLT->GetDZ(esdHLT->GetPrimaryVertex()->GetX(), esdHLT->GetPrimaryVertex()->GetY(), esdHLT->GetPrimaryVertex()->GetZ(), bfield, dca);
 //        fDCArHLT->Fill(dca[0]);  
 //        fDCAzHLT->Fill(dca[1]);
 //     }
@@ -516,7 +516,7 @@ void AliAnalysisTaskHLT::UserExec(Option_t *){
 //     // calculate the offline DCAs the same way like for HLT. The above way is calculating the DCA for the TPC inner barrel surface (Kelly, 17.04.11)
 //     Float_t dca[2];
 //     if(vertOFF->GetStatus()==kTRUE){
-//        esdtrackOFF->GetDZ(esdOFF->GetPrimaryVertex()->GetXv(), esdOFF->GetPrimaryVertex()->GetYv(), esdOFF->GetPrimaryVertex()->GetZv(), bfield, dca);
+//        esdtrackOFF->GetDZ(esdOFF->GetPrimaryVertex()->GetX(), esdOFF->GetPrimaryVertex()->GetY(), esdOFF->GetPrimaryVertex()->GetZ(), bfield, dca);
 //    }
     
     fChargeOff->Fill(esdtrackOFF->Charge());
index 64ba207a4c7c29ac60680cfbee76fdd95edcdf90..8ee56bf12ec343ac5d2e6535bb2ee7c621c58d01 100644 (file)
@@ -304,7 +304,7 @@ void AliAnalysisTaskHLTCentralBarrel::UserExec(Option_t *){
       }
       else{
        //Calculating DCA "old" fashion
-       esdTrackHLT->GetDZ(esdHLT->GetPrimaryVertex()->GetXv(), esdHLT->GetPrimaryVertex()->GetYv(), esdHLT->GetPrimaryVertex()->GetZv(), bfield, dca);
+       esdTrackHLT->GetDZ(esdHLT->GetPrimaryVertex()->GetX(), esdHLT->GetPrimaryVertex()->GetY(), esdHLT->GetPrimaryVertex()->GetZ(), bfield, dca);
        // plotting the DCA calculated by Sergey 
        //esdTrackHLT->GetImpactParametersTPC(DCAr,DCAz);
       }
@@ -415,7 +415,7 @@ THnSparseF* AliAnalysisTaskHLTCentralBarrel::CreateTrackTHnSparse(const char* na
 //       }
 //       else{
 //     //Calculating DCA "old" fashion
-//     esdTrackHLT->GetDZ(esdHLT->GetPrimaryVertex()->GetXv(), esdHLT->GetPrimaryVertex()->GetYv(), esdHLT->GetPrimaryVertex()->GetZv(), bfield, dca);
+//     esdTrackHLT->GetDZ(esdHLT->GetPrimaryVertex()->GetX(), esdHLT->GetPrimaryVertex()->GetY(), esdHLT->GetPrimaryVertex()->GetZ(), bfield, dca);
 //     // plotting the DCA calculated by Sergey 
 //     esdTrackHLT->GetImpactParametersTPC(DCAr,DCAz);
 //       }
index bbe569660787cd0467991d185b5154bf7e45fbe1..dd7d8b4a4e66d62451fbaf1516cb93f3556fe286 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index caa5e5927b48ebe68c9cb8129f98b944bebe3a2f..62cb05443ee53cc5c93551902f63d6b180ad676a 100644 (file)
@@ -391,8 +391,8 @@ void AliITSMeanVertexer::AddToMean(AliESDVertex *vert){
      // second pass
      if(killOutliers && fAccEvents.TestBitNumber(i)){
        vert=(AliESDVertex*)fVertArray[i];
-       Double_t dist=(vert->GetXv()-wpos[0])*(vert->GetXv()-wpos[0]);
-       dist+=(vert->GetYv()-wpos[1])*(vert->GetYv()-wpos[1]);
+       Double_t dist=(vert->GetX()-wpos[0])*(vert->GetX()-wpos[0]);
+       dist+=(vert->GetY()-wpos[1])*(vert->GetY()-wpos[1]);
        dist=sqrt(dist)*10.;    // distance in mm
        fDistH->Fill(dist);
        if(dist>fRCut)fAccEvents.SetBitNumber(i,kFALSE);
index fc47204de97083b72031a307281b9e51d4ce216a..20efc2a85a16359643c33c42cefc86e06fba975d 100644 (file)
@@ -663,22 +663,22 @@ void AliITSQADataMakerRec::MakeESDs(AliESDEvent *esd)
     FillESDsData(11,(Float_t)(vtxTrk->GetNIndices())/(Float_t)nITSrefit5);
 
   if(vtxSPD->GetNContributors()>0) {
-    FillESDsData(4,vtxSPD->GetXv());
-    FillESDsData(5,vtxSPD->GetYv());
-    FillESDsData(6,vtxSPD->GetZv());
+    FillESDsData(4,vtxSPD->GetX());
+    FillESDsData(5,vtxSPD->GetY());
+    FillESDsData(6,vtxSPD->GetZ());
   }
 
   if(vtxTrk->GetNContributors()>0) {
-    FillESDsData(8,vtxTrk->GetXv());
-    FillESDsData(9,vtxTrk->GetYv());
-    FillESDsData(10,vtxTrk->GetZv());
+    FillESDsData(8,vtxTrk->GetX());
+    FillESDsData(9,vtxTrk->GetY());
+    FillESDsData(10,vtxTrk->GetZ());
   }
 
   if(vtxSPD->GetNContributors()>0 && 
      vtxTrk->GetNContributors()>0) {
-    FillESDsData(12,vtxSPD->GetXv()-vtxTrk->GetXv());
-    FillESDsData(13,vtxSPD->GetYv()-vtxTrk->GetYv());
-    FillESDsData(14,vtxSPD->GetZv()-vtxTrk->GetZv());
+    FillESDsData(12,vtxSPD->GetX()-vtxTrk->GetX());
+    FillESDsData(13,vtxSPD->GetY()-vtxTrk->GetY());
+    FillESDsData(14,vtxSPD->GetZ()-vtxTrk->GetZ());
   }
 
   // SPD Tracklets
index 9903d0cc00de454231640bd8783dd9808919aca1..1cdf52eb4ee75f8595140fd264eef6aec2b90359 100644 (file)
@@ -201,7 +201,7 @@ AliESDVertex* AliITSVertexer3D::FindVertexForCurrentEvent(TTree *itsClusterTree)
     vertz.SetHighLimit(fZCutDiamond);
     AliESDVertex* vtxz = vertz.FindVertexForCurrentEvent(itsClusterTree);
     if(vtxz){
-      Double_t position[3]={GetNominalPos()[0],GetNominalPos()[1],vtxz->GetZv()};
+      Double_t position[3]={GetNominalPos()[0],GetNominalPos()[1],vtxz->GetZ()};
       Double_t covmatrix[6];
       vtxz->GetCovMatrix(covmatrix);
       Double_t chi2=99999.;
@@ -221,9 +221,9 @@ AliESDVertex* AliITSVertexer3D::FindVertexForCurrentEvent(TTree *itsClusterTree)
 //______________________________________________________________________
 void AliITSVertexer3D::FindVertex3D(TTree *itsClusterTree){
   // Instantiates the fCurrentVertex object. calle by FindVertexForCurrenEvent
-  Double_t vRadius=TMath::Sqrt(fVert3D.GetXv()*fVert3D.GetXv()+fVert3D.GetYv()*fVert3D.GetYv());
+  Double_t vRadius=TMath::Sqrt(fVert3D.GetX()*fVert3D.GetX()+fVert3D.GetY()*fVert3D.GetY());
   if(vRadius<GetPipeRadius() && fVert3D.GetNContributors()>0){
-    Double_t position[3]={fVert3D.GetXv(),fVert3D.GetYv(),fVert3D.GetZv()};
+    Double_t position[3]={fVert3D.GetX(),fVert3D.GetY(),fVert3D.GetZ()};
     Double_t covmatrix[6];
     fVert3D.GetCovMatrix(covmatrix);
     Double_t chi2=99999.;
@@ -259,8 +259,8 @@ void AliITSVertexer3D::FindVertex3DIterative(){
   Double_t* zP=new Double_t[maxPoints];
   Int_t* index1=new Int_t[maxPoints];
   Int_t* index2=new Int_t[maxPoints];
-  Double_t xbeam=fVert3D.GetXv();
-  Double_t ybeam=fVert3D.GetYv();
+  Double_t xbeam=fVert3D.GetX();
+  Double_t ybeam=fVert3D.GetY();
 
   Int_t iPoint=0;
   for(Int_t ilin1=0; ilin1<nLines; ilin1++){
@@ -430,12 +430,12 @@ void AliITSVertexer3D::FindVertex3DIterative(){
     if(nGoodVert > 1){
       fIsPileup = kTRUE;
       fNTrpuv = fVertArray[1].GetNContributors();
-      fZpuv = fVertArray[1].GetZv();
+      fZpuv = fVertArray[1].GetZ();
     }
     
-    Double_t vRadius=TMath::Sqrt(fVertArray[0].GetXv()*fVertArray[0].GetXv()+fVertArray[0].GetYv()*fVertArray[0].GetYv());
+    Double_t vRadius=TMath::Sqrt(fVertArray[0].GetX()*fVertArray[0].GetX()+fVertArray[0].GetY()*fVertArray[0].GetY());
     if(vRadius<GetPipeRadius() && fVertArray[0].GetNContributors()>0){
-      Double_t position[3]={fVertArray[0].GetXv(),fVertArray[0].GetYv(),fVertArray[0].GetZv()};
+      Double_t position[3]={fVertArray[0].GetX(),fVertArray[0].GetY(),fVertArray[0].GetZ()};
       Double_t covmatrix[6];
       fVertArray[0].GetCovMatrix(covmatrix);
       Double_t chi2=99999.;
@@ -500,12 +500,12 @@ void AliITSVertexer3D::FindVertex3DIterativeMM(){
        // at least one second vertex is present
        fIsPileup = kTRUE;
        fNTrpuv = fVertArray[kk].GetNContributors();
-       fZpuv = fVertArray[kk].GetZv();
+       fZpuv = fVertArray[kk].GetZ();
       }
     }
-    Double_t vRadius=TMath::Sqrt(fVertArray[0].GetXv()*fVertArray[0].GetXv()+fVertArray[0].GetYv()*fVertArray[0].GetYv());
+    Double_t vRadius=TMath::Sqrt(fVertArray[0].GetX()*fVertArray[0].GetX()+fVertArray[0].GetY()*fVertArray[0].GetY());
     if(vRadius<GetPipeRadius() && fVertArray[0].GetNContributors()>0){
-      Double_t position[3]={fVertArray[0].GetXv(),fVertArray[0].GetYv(),fVertArray[0].GetZv()};
+      Double_t position[3]={fVertArray[0].GetX(),fVertArray[0].GetY(),fVertArray[0].GetZ()};
       Double_t covmatrix[6];
       fVertArray[0].GetCovMatrix(covmatrix);
       Double_t chi2=99999.;
@@ -561,9 +561,9 @@ Int_t AliITSVertexer3D::FindTracklets(TTree *itsClusterTree, Int_t optCuts){
   Double_t deltaR=fCoarseMaxRCut;
   Double_t dZmax=fZCutDiamond;
   if(optCuts==1){
-    xbeam=fVert3D.GetXv();
-    ybeam=fVert3D.GetYv();
-    zvert=fVert3D.GetZv();
+    xbeam=fVert3D.GetX();
+    ybeam=fVert3D.GetY();
+    zvert=fVert3D.GetZ();
     deltaPhi = fDiffPhiMax; 
     deltaR=fMaxRCut;
     dZmax=fMaxZCut;
@@ -572,8 +572,8 @@ Int_t AliITSVertexer3D::FindTracklets(TTree *itsClusterTree, Int_t optCuts){
       deltaR=fMaxRCut2;
     }
   } else if(optCuts==2){
-    xbeam=fVert3D.GetXv();
-    ybeam=fVert3D.GetYv();
+    xbeam=fVert3D.GetX();
+    ybeam=fVert3D.GetY();
     deltaPhi = fDiffPhiforPileup;
     deltaR=fMaxRCut;
   }
@@ -759,9 +759,9 @@ Int_t  AliITSVertexer3D::Prepare3DVertex(Int_t optCuts){
   Double_t deltaR=fCoarseMaxRCut;
   Double_t dZmax=fZCutDiamond;
   if(optCuts==1){
-    xbeam=fVert3D.GetXv();
-    ybeam=fVert3D.GetYv();
-    zvert=fVert3D.GetZv();
+    xbeam=fVert3D.GetX();
+    ybeam=fVert3D.GetY();
+    zvert=fVert3D.GetZ();
     deltaR=fMaxRCut;
     dZmax=fMaxZCut;
     if(fPileupAlgo == 2){ 
@@ -769,8 +769,8 @@ Int_t  AliITSVertexer3D::Prepare3DVertex(Int_t optCuts){
       deltaR=fMaxRCut2;
     }
   }else if(optCuts==2){
-    xbeam=fVert3D.GetXv();
-    ybeam=fVert3D.GetYv();
+    xbeam=fVert3D.GetX();
+    ybeam=fVert3D.GetY();
     deltaR=fMaxRCut;
   }
 
@@ -1180,7 +1180,7 @@ void AliITSVertexer3D::MarkUsedClusters(){
 //________________________________________________________
 Int_t AliITSVertexer3D::RemoveTracklets(){
   // Remove trackelts close to first found vertex
-  Double_t vert[3]={fVert3D.GetXv(),fVert3D.GetYv(),fVert3D.GetZv()};
+  Double_t vert[3]={fVert3D.GetX(),fVert3D.GetY(),fVert3D.GetZ()};
   Int_t nRemoved=0;
   for(Int_t i=0; i<fLines.GetEntriesFast();i++){
     AliStrLine *lin = (AliStrLine*)fLines.At(i);
@@ -1219,7 +1219,7 @@ void AliITSVertexer3D::FindOther3DVertices(TTree *itsClusterTree){
            fVertArray[nFoundVert]=fVert3D;
            nFoundVert++;
            if(nFoundVert==2){
-             fZpuv=fVert3D.GetZv();
+             fZpuv=fVert3D.GetZ();
              fNTrpuv=fVert3D.GetNContributors();
            }
          }
index 9c70bb291025d7a090dd1feb6c1cc3583eee3f2f..0f96dd052653537b294f7f787c235e1bfa354329 100644 (file)
@@ -66,16 +66,16 @@ void AliITSVertexerZTest(Float_t delphi=0.05,Float_t window=3.,Float_t initx=0.,
       cout <<"========================================================\n";
       cout << "Event number: "<<i<<")  Z Vertex:"<<endl;
       if(vert){
-       cout<<"FOUND: "<<vert->GetZv()<<"; ";
+       cout<<"FOUND: "<<vert->GetZ()<<"; ";
        cout<<vert->GetZRes()<<"; "<<vert->GetNContributors()<<endl;
        cout <<" True Z position "<<primaryVertex[2]<<", diff= ";
-       cout<<(primaryVertex[2]-vert->GetZv())*10000.<<endl;
+       cout<<(primaryVertex[2]-vert->GetZ())*10000.<<endl;
       } else {
        cout<<"NOT FOUND"<<endl;
       }
     }
     if(vert){
-      Float_t found = vert->GetZv();
+      Float_t found = vert->GetZ();
       diff2->Fill(primaryVertex[2],found);
       found = 10000.*(found-primaryVertex[2]);
       if(vert->GetZRes()!=0){
index ea4b7ec1374e3c33a15780a73037d3ff0073d0e7..90292be251bf00237e072919e8959ec911131c84 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 187a63b1d7409923732794092774e020c49ae991..ffbe6d60de505059c13bdf62945116c4a964efaa 100644 (file)
@@ -186,7 +186,7 @@ Bool_t DoVerticesSPD(Bool_t isMC=kFALSE, Int_t pileupalgo=1, Int_t optdebug=0){
  
       ntrkz = vtxz->GetNContributors();
       if(ntrkz>0)goodz++;
-      zz=vtxz->GetZv();
+      zz=vtxz->GetZ();
       zresz =vtxz->GetZRes(); // microns
       zdiffz = 10000.*(zz-mcVertex[2]); // microns
     }
@@ -210,15 +210,15 @@ Bool_t DoVerticesSPD(Bool_t isMC=kFALSE, Int_t pileupalgo=1, Int_t optdebug=0){
       if(vtx3d->IsFromVertexer3D()) is3d=kTRUE;
       ntrk3d = vtx3d->GetNContributors();
       if(is3d && ntrk3d>0)good3d++;
-      x3d = vtx3d->GetXv();
+      x3d = vtx3d->GetX();
       xerr3d=vtx3d->GetXRes();
       xdiff3d = 10000.*(x3d-mcVertex[0]);  // microns
 
-      y3d = vtx3d->GetYv();
+      y3d = vtx3d->GetY();
       yerr3d=vtx3d->GetYRes();
       ydiff3d = 10000.*(y3d-mcVertex[1]);  // microns
 
-      z3d = vtx3d->GetZv();
+      z3d = vtx3d->GetZ();
       zerr3d=vtx3d->GetZRes();
       zdiff3d = 10000.*(z3d-mcVertex[2]);  // microns
 
index b50a118f05b81a1f2df4be7ed6fcb1f6fbe9e4b5..532cfcab4c77b0a9c21550fe2084b611eca3a5a2 100644 (file)
@@ -10,7 +10,7 @@
 #include "AliITSUClusterizer.h"
 #include "AliITSUGeomTGeo.h"
 #include "AliITSUSegmentationPix.h"
-#include "AliITSdigit.h"
+#include "AliITSUDigitPix.h"
 #include "AliITSURecoParam.h"
 #include "AliITSUAux.h"
 using namespace TMath;
@@ -121,14 +121,14 @@ AliITSUClusterizer::AliITSUClusterizerClusterDigit* AliITSUClusterizer::AllocDig
 AliITSUClusterizer::AliITSUClusterizerClusterDigit* AliITSUClusterizer::NextDigit() 
 {
   // get next digit
-  if (fInputDigitsReadIndex<fInputDigits->GetEntriesFast()) {
-    AliITSdigit *tmp=static_cast<AliITSdigit*>(fInputDigits->UncheckedAt(fInputDigitsReadIndex++));
+  while (fInputDigitsReadIndex<fInputDigits->GetEntriesFast()) {
+    AliITSUDigitPix *tmp=static_cast<AliITSUDigitPix*>(fInputDigits->UncheckedAt(fInputDigitsReadIndex++));
+    if (TMath::Abs(tmp->GetROCycle())>=fRecoParam->GetMaxROCycle()) continue;
     AliITSUClusterizerClusterDigit *digit=AllocDigit();
     digit->fDigit=tmp;
     return digit;
   }
-  else
-    return 0;
+  return 0;
 }
 
 //______________________________________________________________________________
index ddd525c958a310906e09ec39f361174762626857..6a9cd1bc90500925512b6709d584593328d42cda 100644 (file)
@@ -64,6 +64,7 @@ AliITSURecoParam::AliITSURecoParam()
   ,fTrackingConditions(0)
   ,fTracker(0)
   ,fSAonly(kFALSE)
+  ,fMaxROCycle(126) // like in AliITSUSimulation::kMaxROCycleAccept
 {
   // def c-tor
   SetName("ITS");
@@ -91,6 +92,7 @@ AliITSURecoParam::AliITSURecoParam(Int_t nLr)
   ,fTrackingConditions(0)
   ,fTracker(0)
   ,fSAonly(kFALSE)
+  ,fMaxROCycle(126) // like in AliITSUSimulation::kMaxROCycleAccept
 {
   // def c-tor
   SetName("ITS");
index 782f35edae7ef6b2f4460a7837903755f0a3cbbe..4c31d1e1b97a53b90cc84e3a205e47b9a2e046bf 100644 (file)
@@ -48,6 +48,7 @@ class AliITSURecoParam : public AliDetectorRecoParam
   Bool_t      GetUseMatLUT(Int_t step)           const {return (step<0||step>=kNTrackingPhases) ? kFALSE:fUseMatLUT[step];}
   Int_t GetTracker() const {return fTracker;}
   Bool_t GetSAonly() const {return fSAonly;}
+  Int_t GetMaxROCycle() const {return fMaxROCycle;}
   //
   void        SetNLayers(Int_t n);
   void        SetTanLorentzAngle(Int_t lr, Double_t v);
@@ -70,6 +71,7 @@ class AliITSURecoParam : public AliDetectorRecoParam
   virtual void Print(Option_t *opt="")  const;
   void SetTracker(Int_t opt) {fTracker=opt;}
   void SetSAonly(Bool_t sa=kTRUE) {fSAonly=sa;}
+  void SetMaxROCycle(Int_t ro) {fMaxROCycle=ro;}
   //
  protected:
   Int_t          fNLayers;          // number of layers 
@@ -110,7 +112,8 @@ class AliITSURecoParam : public AliDetectorRecoParam
   static const Bool_t   fgkAllowDiagonalClusterization;        // clusters of pixels with common corners
   //
   Int_t fTracker;  // 0 - global, 1 - cooked, 2 - CA
-  Bool_t fSAonly;  // kTRUE, if ITSU standalone tracking only  
+  Bool_t fSAonly;  // kTRUE, if ITSU standalone tracking only
+  Int_t fMaxROCycle; // max RO cycle accepted by the cluster finder  
  private:
   AliITSURecoParam(const AliITSURecoParam & param);
   AliITSURecoParam & operator=(const AliITSURecoParam &param);
index c3b63a280e2a7e440c1cf3071c5cec89ccda6e3f..68dbe80c042db11de88cf82417ff190a849cdcad 100644 (file)
@@ -326,7 +326,7 @@ Int_t AliITSUTrackerCooked::Clusters2Tracks(AliESDEvent *event) {
   const AliESDVertex *vtx=0;
   vtx=event->GetPrimaryVertexSPD();
   if (vtx->GetStatus()) {
-     xyz[0]=vtx->GetXv(); xyz[1]=vtx->GetYv(); xyz[2]=vtx->GetZv();
+     xyz[0]=vtx->GetX(); xyz[1]=vtx->GetY(); xyz[2]=vtx->GetZ();
      SetVertex(xyz);
      MakeSeeds();
   }
@@ -336,7 +336,7 @@ Int_t AliITSUTrackerCooked::Clusters2Tracks(AliESDEvent *event) {
   for (Int_t v=0; v<nfoundSPD; v++) {
       vtx=(AliESDVertex *)verticesSPD->UncheckedAt(v);
       if (!vtx->GetStatus()) continue;
-      xyz[0]=vtx->GetXv(); xyz[1]=vtx->GetYv(); xyz[2]=vtx->GetZv();
+      xyz[0]=vtx->GetX(); xyz[1]=vtx->GetY(); xyz[2]=vtx->GetZ();
       SetVertex(xyz);
       MakeSeeds();
   }
index 93ce1b1b856bba63124946d2bde542c067f038a6..49956ae3a9f84a6e320ca01a7898fa44544fac8f 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 5e7804ccb0f46c1758da29edd2e9a2e14824f1c0..34aa684a00df49c365f633b146e7af9df92782d2 100644 (file)
@@ -201,7 +201,7 @@ Int_t AliITSUComparisonPileup(const Char_t *dir=".") {
      }
      Int_t ngood=refs->GetEntriesFast(); 
      cout<<"Found SPD vertices: "<<nfoundSPD<<
-           "  Reconstructable vertics: "<<ngood<<endl;
+           "  Reconstructable vertices: "<<ngood<<endl;
 
      h2spd->Fill(ngood,nfoundSPD);
      h2trk->Fill(ngood,nfoundTRK);
@@ -211,7 +211,7 @@ Int_t AliITSUComparisonPileup(const Char_t *dir=".") {
          Int_t Associate(const AliESDVertex *g, const AliESDVertex *f, 
             const AliESDEvent *esd); 
          const AliESDVertex *vtxg=(AliESDVertex*)refs->UncheckedAt(g);
-         Double_t zg=vtxg->GetZv();
+         Double_t zg=vtxg->GetZ();
          Double_t ng=vtxg->GetNIndices();
          hgood->Fill(zg);
          hngood->Fill(ng);
@@ -231,7 +231,7 @@ Int_t AliITSUComparisonPileup(const Char_t *dir=".") {
              if (Associate(vtxg,vtxf,event)==0) goto trk; 
         }
 
-         zf=vtxf->GetZv();
+         zf=vtxf->GetZ();
          hfoundspd->Fill(zg);
          hzspd->Fill(zf-zg);
 
@@ -253,7 +253,7 @@ Int_t AliITSUComparisonPileup(const Char_t *dir=".") {
 
          ncor+=n;
          nwro+=(vtxf->GetNIndices()-n); 
-         zf=vtxf->GetZv();
+         zf=vtxf->GetZ();
 
          if (Float_t(n)/vtxf->GetNIndices() > fracMin) {
            hfoundtrk->Fill(zg);
@@ -345,8 +345,8 @@ Associate(const AliESDVertex *g,const AliESDVertex *f,const AliESDEvent *esd) {
 
    if (nf==0) { 
    // SPD vertex
-       Double_t zg=g->GetZv();
-       Double_t zf=f->GetZv();
+       Double_t zg=g->GetZ();
+       Double_t zf=f->GetZ();
        if (TMath::Abs(zf-zg)>2e-2) return 0;
        return 1;
    }
@@ -418,14 +418,14 @@ Int_t GoodPileupVertices(const Char_t *dir) {
          Float_t t=h->InteractionTime();
          UShort_t *idx=new UShort_t[np];
          Int_t ntrk=FindContributors(t,stack,idx);
-         if (ntrk < nMin) continue;
+         if (ntrk < nMin) {delete[] idx; continue;}
          AliESDVertex *vertex=new ((*refs)[nv]) AliESDVertex();
          vertex->SetXv(vtx[0]);
          vertex->SetYv(vtx[1]);
          vertex->SetZv(vtx[2]);
          vertex->SetNContributors(ntrk);
          vertex->SetIndices(ntrk,idx);
-         delete idx;
+         delete[] idx;
          nv++;
      }
      refTree.Fill();
index 5e5432cfcac0e315f58afcc947ba5a018aaa9416..de12a1abc7b9e00524de6053506c573324c6e103 100644 (file)
@@ -33,6 +33,7 @@ void MakeITSRecoParam(AliRecoParam::EventSpecie_t default=AliRecoParam::kLowMult
     itsRecoParam->SetTitle("Cosmic");
     itsRecoParam->SetTracker(0);
     itsRecoParam->SetSAonly(kFALSE);
+    itsRecoParam->SetMaxROCycle(126); // AliITSUSimulation::kMaxROCycleAccept
     recoParamArray->AddLast(itsRecoParam);
   }
   //
@@ -117,6 +118,7 @@ void MakeITSRecoParam(AliRecoParam::EventSpecie_t default=AliRecoParam::kLowMult
     itsRecoParam->SetTitle("LowMult");
     itsRecoParam->SetTracker(0);
     itsRecoParam->SetSAonly(kFALSE);
+    itsRecoParam->SetMaxROCycle(126); // AliITSUSimulation::kMaxROCycleAccept
     recoParamArray->AddLast(itsRecoParam);
     //******************************************************************
     for (int i=0;i<nLr;i++) itsRecoParam->SetAllowDiagonalClusterization(i,kAllowDiagCl);
@@ -217,6 +219,7 @@ void MakeITSRecoParam(AliRecoParam::EventSpecie_t default=AliRecoParam::kLowMult
     itsRecoParam->SetTitle("HighMult");
     itsRecoParam->SetTracker(0);
     itsRecoParam->SetSAonly(kFALSE);
+    itsRecoParam->SetMaxROCycle(126); // AliITSUSimulation::kMaxROCycleAccept
     recoParamArray->AddLast(itsRecoParam);
     //******************************************************************
     for (int i=0;i<nLr;i++) itsRecoParam->SetAllowDiagonalClusterization(i,kAllowDiagCl);
index 211e108e67d580c12c748a2bb1ac0bc12c0a36ea..e89a75fd4ec152a8bac6298e6513423bd6e44f7c 100644 (file)
@@ -87,13 +87,13 @@ void CheckSDDInESD(TString filename="AliESDs.root", Int_t optTracks=kAll){
     cout<<"-------- Event "<<iEvent<<endl;
     printf(" Tracks # = %d\n",esd->GetNumberOfTracks());
     const AliESDVertex *spdv=esd->GetVertex();
-    printf(" SPD Primary Vertex in %f %f %f with %d contributors\n",spdv->GetXv(),spdv->GetYv(),spdv->GetZv(),spdv->GetNContributors());
+    printf(" SPD Primary Vertex in %f %f %f with %d contributors\n",spdv->GetX(),spdv->GetY(),spdv->GetZ(),spdv->GetNContributors());
     const AliESDVertex *trkv=esd->GetPrimaryVertex();
     printf(" Track Primary Vertex with %d contributors\n",trkv->GetNContributors());
     if(spdv->IsFromVertexer3D()){
-      hvx->Fill(spdv->GetXv());
-      hvy->Fill(spdv->GetYv());
-      hvz->Fill(spdv->GetZv());
+      hvx->Fill(spdv->GetX());
+      hvy->Fill(spdv->GetY());
+      hvz->Fill(spdv->GetZ());
     }
     Double_t itss[4];
     for (Int_t iTrack = 0; iTrack < esd->GetNumberOfTracks(); iTrack++) {
index 320855c40acaa79f4d0b7c87e50ed8282148ad83..78a169e7df405595a851a576c29e4971ce452531 100644 (file)
@@ -78,9 +78,9 @@ void AliITSVertexerTracksTest2(Int_t evFirst=0,Int_t evLast=0,
       cout <<"========================================================\n";
       cout << "Event number: "<<i<<")  Z Vertex:"<<endl;
       if(vert){
-       cout<<"FOUND: "<<vert->GetZv()<<"; "<<vert->GetZRes()<<endl;
+       cout<<"FOUND: "<<vert->GetZ()<<"; "<<vert->GetZRes()<<endl;
        cout <<" True Z position "<<primaryVertex[2]<<endl;
-       cout<<", diff= "<<(primaryVertex[2]-vert->GetZv())*10000.<<endl;
+       cout<<", diff= "<<(primaryVertex[2]-vert->GetZ())*10000.<<endl;
       }
       else {
        cout<<"NOT FOUND "<<endl;
index 46b723a7181dac00c3e0dfff6e794d0bfde116b3..bf8b0971f9b994993188fca5a390c8eb81cea660 100644 (file)
@@ -825,7 +825,10 @@ void AliAnalysisTaskFastEmbedding::UserExec(Option_t *)
 
          for(Int_t it=0; it<nTracks; ++it){
             AliAODTrack *tmpTr = 0x0;
-            if(fEmbedMode==kAODFull)      tmpTr = fAODevent->GetTrack(it);
+            if(fEmbedMode==kAODFull)  {
+              tmpTr = dynamic_cast<AliAODTrack*>(fAODevent->GetTrack(it));
+              if(!tmpTr) AliFatal("Not a standard AOD");
+            }
             if(fEmbedMode==kAODJetTracks) tmpTr = dynamic_cast<AliAODTrack*>(leadJet->GetRefTracks()->At(it));
             if(!tmpTr) continue;
             Double_t rd=rndm->Uniform(0.,1.);
index 1f7b5a0e2875d23ec61af14b5536b90828eace46..3df2fb723771689205caf87ab2ad904dfad39ff3 100644 (file)
@@ -410,8 +410,8 @@ void AliAnalysisTaskJetBackgroundSubtract::UserExec(Option_t */*option*/)
    TLorentzVector backgroundv;
    Float_t cent=0.;
    
-   if(fAODOut)cent = fAODOut->GetHeader()->GetCentrality();
-   if(fAODIn) cent = fAODIn->GetHeader()->GetCentrality();
+   if(fAODOut)cent = ((AliVAODHeader*)fAODOut->GetHeader())->GetCentrality();
+   if(fAODIn) cent = ((AliVAODHeader*)fAODIn->GetHeader() )->GetCentrality();
 
    if(evBkg)sigma=evBkg->GetSigma(1); 
   
index 8173f51041f1c3a62c4f2234669ba11073332811..3e765dc70f8cae8be40fccaadacd0cb91233fd92 100644 (file)
@@ -932,7 +932,7 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/)
     TString vtxTitle(vtxAOD->GetTitle());
     zVtx = vtxAOD->GetZ();
 
-    cent = fAOD->GetHeader()->GetCentrality();
+    cent = ((AliVAODHeader*)fAOD->GetHeader())->GetCentrality();
     if(cent<10)cenClass = 0;
     else if(cent<30)cenClass = 1;
     else if(cent<50)cenClass = 2;
@@ -1882,7 +1882,8 @@ Int_t  AliAnalysisTaskJetCluster::GetListOfTracks(TList *list,Int_t type){
       }
 
       for(int it = 0;it < aod->GetNumberOfTracks();++it){
-       AliAODTrack *tr = aod->GetTrack(it);
+       AliAODTrack *tr = dynamic_cast<AliAODTrack*>(aod->GetTrack(it));
+        if(!tr) AliFatal("Not a standard AOD");
        Bool_t bGood = false;
        if(fFilterType == 0)bGood = true;
        else if(fFilterType == 1)bGood = tr->IsHybridTPCConstrainedGlobal();
@@ -2116,7 +2117,8 @@ Bool_t AliAnalysisTaskJetCluster::AvoidDoubleCountingHF(AliAODEvent *aod, AliAOD
 
   for(int jt = 0;jt < aod->GetNumberOfTracks();++jt){
 
-    const AliAODTrack *tr2 = aod->GetTrack(jt);
+    AliAODTrack *tr2 = dynamic_cast<AliAODTrack*>(aod->GetTrack(jt));
+    if(!tr2) AliFatal("Not a standard AOD");
     Int_t idtr2 = tr2->GetID();
        
     if (!(tr2->TestFilterBit(BIT(4)))) continue;
index 6fe3c18897ad8cba18d7f7b35561ef605fb1163f..e68000db1ebc88ed1cdacda94ffb63436d208e79 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 if(NOT FASTJET_FOUND)
   set(PACKAGES CMakelibJETAN.pkg)
index ac3006e5245cb4c5069553bffc7d3bec38a39d1e..1134d5c54a0fb13d115bf676cb686fb961ea9439 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index def51b0d5655eb28750101943ac75c8759ade05e..e98d510a1d976928347f2b5295edfdd48a020970 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 30cfa0d9c87e98794be25410f58b48ee1a93ec6e..42d038ae09a7538b5f4ab554c66d0e56c3b1b518 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 11438d864d502f37e198878443cd612a99d27687..faaf3e2ea1f8826930c97d52af7f9ec7c7917ec4 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 # This will only build MONITOR only if ZeroMQ is found
 
index f848a0ccbb90978c8d3ec54287305ea5906037ff..a843cae28f4a27f8ccc317fd9a95c66665f332be 100644 (file)
@@ -18,7 +18,7 @@ string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
 
 set ( DHDR  MONITORzmqLinkDef.h)
 
-set ( EINCLUDE TPC TPC/Rec ITS RAW STEER/STEER STEER/CDB STEER/STEERBase MONITOR/alistoragemanager)
+set ( EINCLUDE TPC TPC/Rec ITS RAW STEER/STEER STEER/CDB STEER/ESD STEER/STEERBase MONITOR/alistoragemanager)
 
 set(DIMDIR $ENV{DIMDIR})
 set(ODIR $ENV{ODIR})
index 08e96aac320bdae26a1114fe0feb75680df69fc3..dc0961283f98f0e31fbe19c43ffc836efb92e1bb 100644 (file)
@@ -364,7 +364,8 @@ void AliMUONAlignmentTask::UserExec(Option_t *)
       if( handler )
       {
         AliAODEvent* aod = handler->GetAOD();
-        AliAODHeader* header = aod->GetHeader();
+        AliAODHeader* header = dynamic_cast<AliAODHeader*>(aod->GetHeader());
+        if(!header) AliFatal("Not a standard AOD");
         header->SetRunNumber(lESD->GetRunNumber());
         AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
 
index fd8c8dd441bb1186850fc63b926d535f9b360341..c63bf9a424e68b17201710a5c41ed99437e690a5 100644 (file)
@@ -189,7 +189,7 @@ AliMUONCheck::CheckESD(Bool_t pdc06TriggerResponse)
     AliESDVertex* vertex = (AliESDVertex*) fESD->GetVertex();
     
     Double_t zVertex = 0. ;
-    if (vertex) zVertex = vertex->GetZv();
+    if (vertex) zVertex = vertex->GetZ();
     
     Int_t nTracks = (Int_t)fESD->GetNumberOfMuonTracks() ;
     ULong64_t trigword=fESD->GetTriggerMask();
index 9e703933480d5d55638a0ec85df13a4b950e38d2..312ea08b080335c54557f999dbedbd348672d58f 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 6ed1bccf300d1bd477090f7cd2777afdfe975b6e..6402192a8d64696c551b1b1ad847b1f4ecb00bd4 100644 (file)
@@ -336,9 +336,9 @@ Bool_t MUONefficiency(const char* filename = "generated/galice.root", const char
     // get the SPD reconstructed vertex (vertexer) and fill the histogram
     AliESDVertex* Vertex = (AliESDVertex*) esd->GetVertex();
     if (Vertex->GetNContributors()) {
-      fZVertex = Vertex->GetZv();
-      fYVertex = Vertex->GetYv();
-      fXVertex = Vertex->GetXv();      
+      fZVertex = Vertex->GetZ();
+      fYVertex = Vertex->GetY();
+      fXVertex = Vertex->GetX();      
       errXVtx = Vertex->GetXRes();
       errYVtx = Vertex->GetYRes();
     }
index 5b30efc9212965b12beb01ab0a18044aa840b8fd..2ca820bde3ed6d348a195bdcad6a87f0bfd53ca5 100644 (file)
@@ -182,9 +182,9 @@ Bool_t MUONmassPlot(const char* esdFileName = "AliESDs.root", const char* geoFil
     // get the SPD reconstructed vertex (vertexer) and fill the histogram
     AliESDVertex* Vertex = (AliESDVertex*) esd->GetVertex();
     if (Vertex->GetNContributors()) {
-      fZVertex = Vertex->GetZv();
-      fYVertex = Vertex->GetYv();
-      fXVertex = Vertex->GetXv();
+      fZVertex = Vertex->GetZ();
+      fYVertex = Vertex->GetY();
+      fXVertex = Vertex->GetX();
       errXVtx = Vertex->GetXRes();
       errYVtx = Vertex->GetYRes();
     }
index 754568a1f553d6224efa48397bf68cdb21728086..9451fb35e130ba88654858c4fb7b8430dd6d7d63 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index fda233fdc6f77570a66bae4f77f0114715a0d18c..55568add1e3ddb4db3743bc4c379478c15462853 100644 (file)
@@ -1627,7 +1627,7 @@ void AliPHOSPIDv1::GetVertex(void)
   if(fESD){
     const AliESDVertex *esdVtx = fESD->GetVertex() ;
     if(esdVtx && esdVtx->GetChi2()!=0.){
-      fVtx.SetXYZ(esdVtx->GetXv(),esdVtx->GetYv(),esdVtx->GetZv()) ;
+      fVtx.SetXYZ(esdVtx->GetX(),esdVtx->GetY(),esdVtx->GetZ()) ;
       return ;
     }
   }
index 8f70a5aa41c19b2f97fa8d745384527c6283607e..6d8a73883637fd5f2c910b2b220f7e9bee7c9356 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 970ebe12df1554cbb5761fc2beb97cd1e7d591cb..b76a4be6d23dc976a97a50ae1300dd34272dcb50 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 90fd61fe57c74ff0293620a14a03b5715c4eb3fd..2535d33dd66aece1d4c0072ba3f03831d7acf019 100644 (file)
@@ -3,7 +3,7 @@
 # Author: Johny Jose m(johny.jose@cern.ch)
 #         Port of previous Makefile build to cmake
 
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
 file(GLOB PACKAGES CMake*.pkg)
 
index 101a93e47b9f007bc257800d4c912d43126fab5e..e5dc493b7b67b226c4cb1c06a425d0d0eb632769 100644 (file)
@@ -31,11 +31,8 @@ set ( SRCS
     DevNanoAOD/AliAnalysisTaskNanoAODFilter.cxx
     DevNanoAOD/AliESEHelpers.cxx
     DevNanoAOD/AliNanoAODCustomSetter.cxx
-    DevNanoAOD/AliNanoAODHeader.cxx
     DevNanoAOD/AliNanoAODReplicator.cxx
-    DevNanoAOD/AliNanoAODStorage.cxx
     DevNanoAOD/AliNanoAODTrack.cxx
-    DevNanoAOD/AliNanoAODTrackMapping.cxx
     DevNanoAOD/AliAnalysisTaskSpectraAllChNanoAOD.cxx
     )
 
index 2dd3b27c14a7b3a849222e771b4280b70cd6ce0e..a83339ab3cbe23ff5a5f610160c53444cc3ac9ce 100644 (file)
@@ -42,6 +42,7 @@ set ( SRCS
  EMCAL/AliEmcalMCTrackSelector.cxx
  EMCAL/AliEmcalParticle.cxx
  EMCAL/AliEmcalParticleMaker.cxx
+ EMCAL/AliEmcalPatchFromCellMaker.cxx
  EMCAL/AliEmcalPhysicsSelection.cxx
  EMCAL/AliEmcalPhysicsSelectionTask.cxx
  EMCAL/AliEmcalPicoTrackMaker.cxx
index 0f5d7cecba4f5153419bb29f34d58f089fbb9544..6131e00a1c3c508089a92f3593f66cffcef4a3c7 100644 (file)
@@ -57,6 +57,7 @@ set ( SRCS
     FLOW/Tasks/AliAnalysisTaskFlowEPCascade.cxx
     FLOW/Tasks/AliAnalysisTaskJetFlowMC.cxx
     FLOW/Tasks/AliAnalysisTaskMultiparticleCorrelations.cxx
+    FLOW/Tasks/AliAnalysisTaskPIDconfig.cxx
     )
 
 string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
index 72dd3c1ddbc899c02b7e956fef45e2189dec44cf..ae5b4e861918174aba853a22e14301024e4332cb 100644 (file)
@@ -51,9 +51,12 @@ Bool_t AliAnalysisNanoAODEventCuts::IsSelected(TObject* obj)
 
 
 void AliNanoAODSimpleSetter::SetNanoAODHeader(const AliAODEvent * event   , AliNanoAODHeader * head  ) {
+
+  AliAODHeader * header = dynamic_cast<AliAODHeader*>(event->GetHeader());
+  if (!header) AliFatal("Not a standard AOD");
   // Set custom nano aod vars
-  Double_t centr    = event->GetHeader()->GetCentralityP()->GetCentralityPercentile("V0M");
-  Double_t magfield = event->GetHeader()->GetMagneticField();
+  Double_t centr    = header->GetCentralityP()->GetCentralityPercentile("V0M");
+  Double_t magfield = header->GetMagneticField();
   head->SetVar(0, centr);
   head->SetVar(1, magfield);
 
diff --git a/PWG/DevNanoAOD/AliNanoAODHeader.h b/PWG/DevNanoAOD/AliNanoAODHeader.h
deleted file mode 100644 (file)
index 869725f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef _ALINANOAODHEADER_H_
-#define _ALINANOAODHEADER_H_
-
-#include "AliVHeader.h"
-#include "AliNanoAODStorage.h"
-
-
-
-class AliNanoAODHeader : public AliVHeader, public AliNanoAODStorage
-{
-public:
-  using AliVHeader::ClassName;
-  AliNanoAODHeader()  {;}
-  AliNanoAODHeader(Int_t size){ AllocateInternalStorage(size);}
-  virtual ~AliNanoAODHeader(){;}
-
-
-  // Interface methods
-  // AliNanoAODHeader(const AliVHeader& evt); 
-  AliNanoAODHeader& operator=(const AliNanoAODHeader& evt);
-  
-  virtual UShort_t  GetBunchCrossNumber()   const { AliError("Not implemented");return 0;}
-  virtual UInt_t    GetOrbitNumber()        const { AliError("Not implemented");return 0;}
-  virtual UInt_t    GetPeriodNumber()       const { AliError("Not implemented");return 0;}
-  virtual ULong64_t GetTriggerMask()        const { AliError("Not implemented");return 0;}
-  virtual UChar_t   GetTriggerCluster()     const { AliError("Not implemented");return 0;}
-  virtual UInt_t    GetEventType()          const { AliError("Not implemented");return 0;}
-  virtual void Print(Option_t* /*option = ""*/) const  {Printf("I'm a special header!");}
-  virtual void Clear(Option_t * opt) ;
-
-
-  Double_t  GetMagneticField()      const { return GetVar(1); }
-  Double_t  GetCentrality (const char *estimator = "V0M") { return GetVar(0);}
-  
-  ClassDef(AliNanoAODHeader, 1)
-
-};
-
-#endif /* _ALINANOAODHEADER_H_ */
index 1e304629a47b8e20c413100bd6585d49373efe5e..6a78c619aefccc1ca8cb4aa20e3b761c024b9815 100644 (file)
@@ -223,7 +223,7 @@ void AliAnalysisTaskEMCALClusterizeFast::UserExec(Option_t *)
     AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
     offtrigger = ((AliInputEventHandler*)(am->GetInputEventHandler()))->IsEventSelected();
   } else {
-    offtrigger =  fAod->GetHeader()->GetOfflineTrigger();
+    offtrigger =  ((AliVAODHeader*)fAod->GetHeader())->GetOfflineTrigger();
   }
 
   if (!MCEvent()) {
@@ -829,7 +829,8 @@ void AliAnalysisTaskEMCALClusterizeFast::Init()
         if (fEsd) {
           gm = fEsd->GetEMCALMatrix(mod);
         } else {
-          AliAODHeader *aodheader = fAod->GetHeader();
+          AliAODHeader *aodheader = dynamic_cast<AliAODHeader*>(fAod->GetHeader());
+          if(!aodheader) AliFatal("Not a standard AOD");
           if (aodheader) {
             gm = aodheader->GetEMCALMatrix(mod);
           }
index 06ed828d5ae5c20caf1498ec1ab80e4fc2f2c712..7117c956a8237540f92c9f61f2f94094f241e940 100644 (file)
@@ -57,6 +57,7 @@ AliAnalysisTaskEmcal::AliAnalysisTaskEmcal() :
   fTrackPtCut(0),
   fMinNTrack(0),
   fUseAliAnaUtils(kFALSE),
+  fRejectPileup(kFALSE),
   fAliAnalysisUtils(0x0),
   fOffTrigger(AliVEvent::kAny),
   fTrigClass(),
@@ -140,6 +141,7 @@ AliAnalysisTaskEmcal::AliAnalysisTaskEmcal(const char *name, Bool_t histo) :
   fTrackPtCut(0),
   fMinNTrack(0),
   fUseAliAnaUtils(kFALSE),
+  fRejectPileup(kFALSE),
   fAliAnalysisUtils(0x0),
   fOffTrigger(AliVEvent::kAny),
   fTrigClass(),
@@ -782,7 +784,7 @@ Bool_t AliAnalysisTaskEmcal::IsEventSelected()
     } else {
       const AliAODEvent *aev = dynamic_cast<const AliAODEvent*>(InputEvent());
       if (aev) {
-        res = aev->GetHeader()->GetOfflineTrigger();
+        res = ((AliVAODHeader*)aev->GetHeader())->GetOfflineTrigger();
       }
     }
     if ((res & fOffTrigger) == 0) {
@@ -855,7 +857,7 @@ Bool_t AliAnalysisTaskEmcal::IsEventSelected()
       return kFALSE;
     }
 
-    if (fAliAnalysisUtils->IsPileUpEvent(InputEvent())) {
+    if (fRejectPileup && fAliAnalysisUtils->IsPileUpEvent(InputEvent())) {
       if (fGeneralHistograms) fHistEventRejection->Fill("PileUp",1);
       return kFALSE;
     }
index 14c4319920e19a2d3d7f7e0722106373e99c4d9d..38d2726b39ad1e0b68ed74a242d0112f77f0f2e8 100644 (file)
@@ -83,7 +83,7 @@ class AliAnalysisTaskEmcal : public AliAnalysisTaskSE {
   void                        SetTracksName(const char *n)                          { AddParticleContainer(n)                             ; }
   void                        SetTrigClass(const char *n)                           { fTrigClass         = n                              ; } 
   void                        SetTriggerTypeSel(TriggerType t)                      { fTriggerTypeSel    = t                              ; } 
-  void                        SetUseAliAnaUtils(Bool_t b)                           { fUseAliAnaUtils    = b                              ; }
+  void                        SetUseAliAnaUtils(Bool_t b, Bool_t bRejPilup = kTRUE) { fUseAliAnaUtils    = b ; fRejectPileup = bRejPilup  ; }
   void                        SetVzRange(Double_t min, Double_t max)                { fMinVz             = min  ; fMaxVz   = max          ; }
 
  protected:
@@ -131,7 +131,8 @@ class AliAnalysisTaskEmcal : public AliAnalysisTaskSE {
   Double_t                    fMaxVz;                      // max vertex for event selection
   Double_t                    fTrackPtCut;                 // cut on track pt in event selection
   Int_t                       fMinNTrack;                  // minimum nr of tracks in event with pT>fTrackPtCut
-  Bool_t                      fUseAliAnaUtils;             //  used for LHC13* data
+  Bool_t                      fUseAliAnaUtils;             // used for LHC13* data: z-vtx, Ncontributors, z-vtx resolution cuts
+  Bool_t                      fRejectPileup;               // Reject pilup using function AliAnalysisUtils::IsPileUpEvent()
   AliAnalysisUtils           *fAliAnalysisUtils;           //! vertex selection (optional)
   UInt_t                      fOffTrigger;                 // offline trigger for event selection
   TString                     fTrigClass;                  // trigger class name for event selection
@@ -150,7 +151,7 @@ class AliAnalysisTaskEmcal : public AliAnalysisTaskSE {
   Int_t                       fMinMCLabel;                 // minimum MC label value for the tracks/clusters being considered MC particles
   Int_t                       fMCLabelShift;               // if MC label > fMCLabelShift, MC label -= fMCLabelShift
   Int_t                       fNcentBins;                  // how many centrality bins
-  Bool_t                      fNeedEmcalGeom;              // whether or not the task need the emcal geometry
+  Bool_t                      fNeedEmcalGeom;              // whether or not the task needs the emcal geometry
   Bool_t                      fIsEsd;                      //!whether it's an ESD analysis
   AliEMCALGeometry           *fGeom;                       //!emcal geometry
   TClonesArray               *fTracks;                     //!tracks
@@ -194,6 +195,6 @@ class AliAnalysisTaskEmcal : public AliAnalysisTaskSE {
   AliAnalysisTaskEmcal(const AliAnalysisTaskEmcal&);            // not implemented
   AliAnalysisTaskEmcal &operator=(const AliAnalysisTaskEmcal&); // not implemented
 
-  ClassDef(AliAnalysisTaskEmcal, 10) // EMCAL base analysis task
+  ClassDef(AliAnalysisTaskEmcal, 11) // EMCAL base analysis task
 };
 #endif
index 28cc61ab603213e909a87c53c690e5689ad43369..53f7d27ff0082bc6705bafa84b272d04d2238e0d 100644 (file)
@@ -51,7 +51,7 @@ class AliEmcalContainer : public TNamed {
   AliEmcalContainer(const char *name); 
   virtual ~AliEmcalContainer(){;}
 
-  TClonesArray               *GetArray()                          { return fClArray                   ; }
+  TClonesArray               *GetArray() const                      { return fClArray                   ; }
   const TString&              GetArrayName()                  const { return fClArrayName               ; }
   Int_t                       GetCurrentID()                  const { return fCurrentID-1               ; }
   Bool_t                      GetIsParticleLevel()            const { return fIsParticleLevel           ; }
diff --git a/PWG/EMCAL/AliEmcalPatchFromCellMaker.cxx b/PWG/EMCAL/AliEmcalPatchFromCellMaker.cxx
new file mode 100644 (file)
index 0000000..ad5f9e4
--- /dev/null
@@ -0,0 +1,354 @@
+// $Id$
+//
+// Class to put cells into trigger patches
+//
+// Author: M. Verweij
+
+#include <TClonesArray.h>
+#include <TRandom3.h>
+#include <TProfile.h>
+#include <TH3F.h>
+
+#include "AliAnalysisManager.h"
+#include "AliLog.h"
+#include "AliEMCALGeometry.h"
+#include "AliEmcalTriggerPatchInfo.h"
+
+#include "AliEmcalPatchFromCellMaker.h"
+
+ClassImp(AliEmcalPatchFromCellMaker)
+
+//________________________________________________________________________
+AliEmcalPatchFromCellMaker::AliEmcalPatchFromCellMaker() : 
+  AliAnalysisTaskEmcal("AliEmcalPatchFromCellMaker",kTRUE),
+  fCaloTriggersOutName("EmcalPatches32x32"),
+  fCaloTriggersOut(0),
+  fPatchDim(32),
+  fMinCellE(0.15),
+  fCellTimeMin(485e-9),
+  fCellTimeMax(685e-9),
+  fL1Slide(0),
+  fh3EEtaPhiCell(0),
+  fh2CellEnergyVsTime(0),
+  fh1CellEnergySum(0)
+{
+  // Constructor.
+ for (Int_t i = 0; i < kPatchCols; i++) {
+    for (Int_t j = 0; j < kPatchRows; j++) {
+      fPatchADCSimple[i][j] = 0.;
+      fPatchESimple[i][j] = 0.;
+    }
+ }
+
+  SetMakeGeneralHistograms(kTRUE);
+}
+
+//________________________________________________________________________
+AliEmcalPatchFromCellMaker::AliEmcalPatchFromCellMaker(const char *name) : 
+  AliAnalysisTaskEmcal(name,kTRUE),
+  fCaloTriggersOutName("EmcalPatches32x32"),
+  fCaloTriggersOut(0),
+  fPatchDim(32),
+  fMinCellE(0.15),
+  fCellTimeMin(485e-9),
+  fCellTimeMax(685e-9),
+  fL1Slide(0),
+  fh3EEtaPhiCell(0),
+  fh2CellEnergyVsTime(0),
+  fh1CellEnergySum(0)
+{
+  // Constructor.
+ for (Int_t i = 0; i < kPatchCols; i++) {
+    for (Int_t j = 0; j < kPatchRows; j++) {
+      fPatchADCSimple[i][j] = 0.;
+      fPatchESimple[i][j] = 0.;
+    }
+ }
+
+  SetMakeGeneralHistograms(kTRUE);
+}
+
+//________________________________________________________________________
+AliEmcalPatchFromCellMaker::~AliEmcalPatchFromCellMaker()
+{
+  // Destructor.
+}
+
+//________________________________________________________________________
+void AliEmcalPatchFromCellMaker::ExecOnce() 
+{
+  // Init the analysis.
+
+  AliAnalysisTaskEmcal::ExecOnce();
+
+  if (!fInitialized)
+    return;
+
+  if (!fCaloTriggersOutName.IsNull()) {
+    fCaloTriggersOut = new TClonesArray("AliEmcalTriggerPatchInfo");
+    fCaloTriggersOut->SetName(fCaloTriggersOutName);
+
+    if (!(InputEvent()->FindListObject(fCaloTriggersOutName))) {
+      InputEvent()->AddObject(fCaloTriggersOut);
+    }
+    else {
+      fInitialized = kFALSE;
+      AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fCaloTriggersOutName.Data()));
+      return;
+    }
+  }
+
+}
+
+//________________________________________________________________________
+void AliEmcalPatchFromCellMaker::UserCreateOutputObjects()
+{
+  // Create user output.
+
+  AliAnalysisTaskEmcal::UserCreateOutputObjects();
+
+  Int_t fgkNPhiBins = 18*8;
+  Float_t kMinPhi   = 0.;
+  Float_t kMaxPhi   = 2.*TMath::Pi();
+  Double_t *binsPhi = new Double_t[fgkNPhiBins+1];
+  for(Int_t i=0; i<=fgkNPhiBins; i++) binsPhi[i]=(Double_t)kMinPhi + (kMaxPhi-kMinPhi)/fgkNPhiBins*(Double_t)i ;
+
+  Int_t fgkNEtaBins = 100;
+  Float_t fgkEtaMin = -1.;
+  Float_t fgkEtaMax =  1.;
+  Double_t *binsEta=new Double_t[fgkNEtaBins+1];
+  for(Int_t i=0; i<=fgkNEtaBins; i++) binsEta[i]=(Double_t)fgkEtaMin + (fgkEtaMax-fgkEtaMin)/fgkNEtaBins*(Double_t)i ;
+
+  Int_t fgkNTimeBins = 600;
+  Float_t kMinTime   = -200.;
+  Float_t kMaxTime   = 1000;
+  Double_t *binsTime = new Double_t[fgkNTimeBins+1];
+  for(Int_t i=0; i<=fgkNTimeBins; i++) binsTime[i]=(Double_t)kMinTime + (kMaxTime-kMinTime)/fgkNTimeBins*(Double_t)i ;
+
+  Double_t enBinEdges[3][2];
+  enBinEdges[0][0] = 1.; //10 bins
+  enBinEdges[0][1] = 0.1;
+  enBinEdges[1][0] = 5.; //8 bins
+  enBinEdges[1][1] = 0.5;
+  enBinEdges[2][0] = 100.;//95 bins
+  enBinEdges[2][1] = 1.;
+
+  const Float_t enmin1 =  0;
+  const Float_t enmax1 =  enBinEdges[0][0];
+  const Float_t enmin2 =  enmax1 ;
+  const Float_t enmax2 =  enBinEdges[1][0];
+  const Float_t enmin3 =  enmax2 ;
+  const Float_t enmax3 =  enBinEdges[2][0];//fgkEnMax;
+  const Int_t nbin11 = (int)((enmax1-enmin1)/enBinEdges[0][1]);
+  const Int_t nbin12 = (int)((enmax2-enmin2)/enBinEdges[1][1])+nbin11;
+  const Int_t nbin13 = (int)((enmax3-enmin3)/enBinEdges[2][1])+nbin12;
+
+  Int_t fgkNEnBins=nbin13;
+  Double_t *binsEn=new Double_t[fgkNEnBins+1];
+  for(Int_t i=0; i<=fgkNEnBins; i++) {
+    if(i<=nbin11) binsEn[i]=(Double_t)enmin1 + (enmax1-enmin1)/nbin11*(Double_t)i ;
+    if(i<=nbin12 && i>nbin11) binsEn[i]=(Double_t)enmin2 + (enmax2-enmin2)/(nbin12-nbin11)*((Double_t)i-(Double_t)nbin11) ;
+    if(i<=nbin13 && i>nbin12) binsEn[i]=(Double_t)enmin3 + (enmax3-enmin3)/(nbin13-nbin12)*((Double_t)i-(Double_t)nbin12) ;
+  }
+
+  fh3EEtaPhiCell = new TH3F("fh3EEtaPhiCell","fh3EEtaPhiCell;E_{cell};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
+  fOutput->Add(fh3EEtaPhiCell);
+
+  fh2CellEnergyVsTime = new TH2F("fh2CellEnergyVsTime","fh2CellEnergyVsTime;E_{cell};time",fgkNEnBins,binsEn,fgkNTimeBins,binsTime);
+  fOutput->Add(fh2CellEnergyVsTime);
+
+  fh1CellEnergySum = new TH1F("fh1CellEnergySum","fh1CellEnergySum;E_{cell};time",fgkNEnBins,binsEn);
+  fOutput->Add(fh1CellEnergySum);
+
+  PostData(1, fOutput); // Post data for ALL output slots > 0 here.
+
+  if(binsEn)                delete [] binsEn;
+  if(binsPhi)               delete [] binsPhi;
+  if(binsEta)               delete [] binsEta;
+  if(binsTime)              delete [] binsTime;
+}
+
+//________________________________________________________________________
+Bool_t AliEmcalPatchFromCellMaker::Run() 
+{
+  // Main loop, called for each event.
+  
+  fCaloTriggersOut->Delete();
+
+  if (!fCaloCells) {
+    AliError(Form("Calo cells container %s not available.", fCaloCellsName.Data()));
+    return kFALSE;
+  }
+
+ for (Int_t i = 0; i < kPatchCols; i++) {
+    for (Int_t j = 0; j < kPatchRows; j++) {
+      fPatchADCSimple[i][j] = 0.;
+      fPatchESimple[i][j] = 0.;
+    }
+ }
+
+  if(!FillPatchADCSimple()) {
+    AliError(Form("%s Could not create simple ADC patches",GetName()));
+    return kFALSE;
+  }
+
+  RunSimpleOfflineTrigger();
+
+  Double_t sum = 0.;
+  for (Int_t i = 0; i < kPatchCols; i++) {
+    for (Int_t j = 0; j < kPatchRows; j++) {
+      sum+=fPatchESimple[i][j];
+    }
+  }
+
+  return kTRUE;
+}
+
+//________________________________________________________________________
+Bool_t AliEmcalPatchFromCellMaker::FillPatchADCSimple()
+{
+
+  // fill the array for offline trigger processing
+
+  // fill the patch ADCs from cells
+  Double_t sum = 0.;
+  Int_t nCell = fCaloCells->GetNumberOfCells();
+  for(Int_t iCell = 0; iCell < nCell; ++iCell) {
+    // get the cell info, based in index in array
+    Short_t cellId = fCaloCells->GetCellNumber(iCell);
+
+    Double_t cellT = fCaloCells->GetCellTime(cellId); 
+    Double_t amp = fCaloCells->GetAmplitude(iCell);
+    fh2CellEnergyVsTime->Fill(amp,cellT*1e9);
+
+    //timing cuts
+    if(cellT<fCellTimeMin || cellT>fCellTimeMax) continue;
+    //energy cut
+    if(amp<fMinCellE) continue;
+    sum+=amp;
+
+    // get position
+    Int_t absId=-1;
+    fGeom->GetFastORIndexFromCellIndex(cellId, absId);
+    Int_t globCol=-1, globRow=-1;
+    fGeom->GetPositionInEMCALFromAbsFastORIndex(absId, globCol, globRow);
+    // add
+    fPatchADCSimple[globCol][globRow] += amp/kEMCL1ADCtoGeV;
+    fPatchESimple[globCol][globRow] += amp;
+
+    TVector3 pos;
+    fGeom->GetGlobal(cellId, pos);
+    TLorentzVector lv(pos,amp);
+    Double_t cellEta = lv.Eta();
+    Double_t cellPhi = lv.Phi();
+    if(cellPhi<0.) cellPhi+=TMath::TwoPi();
+    if(cellPhi>TMath::TwoPi()) cellPhi-=TMath::TwoPi();
+    fh3EEtaPhiCell->Fill(amp,cellEta,cellPhi); 
+  }
+  fh1CellEnergySum->Fill(sum);
+
+  return kTRUE;
+}
+
+//________________________________________________________________________
+void AliEmcalPatchFromCellMaker::RunSimpleOfflineTrigger()
+{
+  // Runs a simple offline trigger algorithm.
+  // It creates separate patches with dimension fPatchDim
+
+  // run the trigger algo, stepping by stepsize (in trigger tower units)
+  Int_t itrig = 0;
+  Int_t patchSize = GetDimFastor();
+  Int_t stepSize = GetSlidingStepSizeFastor();
+  Int_t maxCol = kPatchCols - patchSize;
+  Int_t maxRow = kPatchRows - patchSize;
+
+  for (Int_t i = 0; i <= maxCol; i += stepSize) {
+    for (Int_t j = 0; j <= maxRow; j += stepSize) {
+      // get the trigger towers composing the patch
+      Int_t   adcAmp = 0;
+      Double_t enAmp = 0.;
+      // window
+      for (Int_t k = 0; k < patchSize; ++k) {
+        for (Int_t l = 0; l < patchSize; ++l) {
+         // add amplitudes
+          adcAmp += (ULong64_t)fPatchADCSimple[i+k][j+l];
+         enAmp += fPatchESimple[i+k][j+l];
+       }
+      }
+
+      if (adcAmp == 0) {
+       AliDebug(2,"EMCal trigger patch with 0 ADC counts.");
+       continue;
+      }
+
+      Int_t absId=-1;
+      Int_t cellAbsId[4]={-1,-1,-1,-1};
+
+      // get low left edge (eta max, phi min)
+      fGeom->GetAbsFastORIndexFromPositionInEMCAL(i, j, absId);
+      // convert to the 4 absId of the cells composing the trigger channel
+      fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
+      TVector3 edge1;
+      fGeom->GetGlobal(cellAbsId[0], edge1);
+
+      // get up right edge (eta min, phi max)
+      fGeom->GetAbsFastORIndexFromPositionInEMCAL(i+patchSize-1, j+patchSize-1, absId);
+      fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
+      TVector3 edge2;
+      fGeom->GetGlobal(cellAbsId[3], edge2);
+
+      // get the center of the patch
+      Int_t offsetCenter = TMath::FloorNint(0.5*patchSize);
+      fGeom->GetAbsFastORIndexFromPositionInEMCAL(i+offsetCenter-1, j+offsetCenter-1, absId);
+      fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
+      TVector3 center1;
+      fGeom->GetGlobal(cellAbsId[3], center1);
+
+      fGeom->GetAbsFastORIndexFromPositionInEMCAL(i+offsetCenter, j+offsetCenter, absId);
+      fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
+      TVector3 center2;
+      fGeom->GetGlobal(cellAbsId[0], center2);
+
+      TVector3 centerGeo(center1);
+      centerGeo += center2;
+      centerGeo *= 0.5;
+
+      // save the trigger object
+      AliEmcalTriggerPatchInfo *trigger =
+       new ((*fCaloTriggersOut)[itrig]) AliEmcalTriggerPatchInfo();
+      itrig++;
+      trigger->SetCenterGeo(centerGeo, enAmp);
+      trigger->SetEdge1(edge1, enAmp);
+      trigger->SetEdge2(edge2, enAmp);
+      trigger->SetADCAmp(adcAmp);
+      trigger->SetEdgeCell(i*2, j*2); // from triggers to cells
+    }
+  } // trigger algo
+  AliDebug(2,Form("Created %d trigger patches (%d) in this event",itrig,patchSize));
+
+}
+
+//________________________________________________________________________
+Int_t AliEmcalPatchFromCellMaker::GetDimFastor() const {
+
+  Int_t dim = TMath::FloorNint((Double_t)(fPatchDim/2.));
+  return dim;
+}
+
+//________________________________________________________________________
+Int_t AliEmcalPatchFromCellMaker::GetSlidingStepSizeFastor() const {
+
+  Int_t dim = GetDimFastor();
+  if(!fL1Slide) return dim;
+
+  if(dim==2) return 2;
+  else if(dim==4) return 4;
+  else if(dim==8) return 4;
+  else if(dim==16) return 8;
+  else return -1;
+}
+
+
+
+
diff --git a/PWG/EMCAL/AliEmcalPatchFromCellMaker.h b/PWG/EMCAL/AliEmcalPatchFromCellMaker.h
new file mode 100644 (file)
index 0000000..33c7127
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef ALIEMCALPATCHFROMCELLMAKER_H
+#define ALIEMCALPATCHFROMCELLMAKER_H
+
+class TClonesArray;
+class TH3F;
+
+#include "AliEMCALTriggerTypes.h"
+#include "AliAnalysisTaskEmcal.h"
+
+class AliEmcalPatchFromCellMaker : public AliAnalysisTaskEmcal {
+ public:
+  AliEmcalPatchFromCellMaker();
+  AliEmcalPatchFromCellMaker(const char *name);
+  virtual ~AliEmcalPatchFromCellMaker();
+
+  void               SetCaloTriggersOutName(const char *name)          { fCaloTriggersOutName = name; }
+  void               SetPatchDimension(Int_t i)                        { fPatchDim            = i;    }
+  void               SetMinCellE(Double_t e)                           { fMinCellE            = e;    }
+  void               SetCellTimeCuts(Double_t min, Double_t max)       { fCellTimeMin = min; fCellTimeMax = max; }
+  void               ActivateSlidingPatch(Bool_t b)                    { fL1Slide             = b;    }
+
+ protected:
+  enum{
+    kPatchCols = 48,
+    kPatchRows = 64
+  };
+
+  void               ExecOnce();
+  Bool_t             Run();
+  // Bool_t             FillHistograms();
+  void               UserCreateOutputObjects();
+
+  Bool_t             FillPatchADCSimple();
+  void               RunSimpleOfflineTrigger();
+
+  //Getters
+  Int_t              GetPatchDimension() const                         { return fPatchDim;  }
+  Double_t           GetPatchArea() const                              { return (Double_t)(fPatchDim*fPatchDim)*0.014*0.014; }
+  Int_t              GetDimFastor() const;
+  Int_t              GetSlidingStepSizeFastor() const;
+
+  TString            fCaloTriggersOutName;  // name of output patch array
+  TClonesArray      *fCaloTriggersOut;      //!trigger array out
+      
+  Double_t           fPatchADCSimple[kPatchCols][kPatchRows];   // patch map for simple offline trigger
+  Double_t           fPatchESimple[kPatchCols][kPatchRows];     // patch map for simple offline trigger
+
+  Int_t              fPatchDim;             // dimension of patch in #cells
+  Double_t           fMinCellE;             // minimum cell energy
+  Double_t           fCellTimeMin;          // minimum time cell
+  Double_t           fCellTimeMax;          // maximum time cell
+  Bool_t             fL1Slide;              // sliding window on
+
+ private:
+  TH3F     *fh3EEtaPhiCell;                    //! cell E, eta, phi
+  TH2F     *fh2CellEnergyVsTime;               //! emcal cell energy vs time
+  TH1F     *fh1CellEnergySum;                  //! sum of energy in all emcal cells
+
+  AliEmcalPatchFromCellMaker(const AliEmcalPatchFromCellMaker&);            // not implemented
+  AliEmcalPatchFromCellMaker &operator=(const AliEmcalPatchFromCellMaker&); // not implemented
+
+  ClassDef(AliEmcalPatchFromCellMaker, 1); // Task to make PicoTracks in a grid corresponding to EMCAL/DCAL acceptance
+};
+#endif
index d194f07cf478be80464db56f6689bfa96229c40a..a7e68ce57820d56b596f9797cd419d80d9b65049 100644 (file)
@@ -56,14 +56,14 @@ UInt_t AliEmcalPhysicsSelection::GetSelectionMask(const TObject* obj)
     am->LoadBranch("AliESDRun.");
     TString title(eev->GetHeader()->GetTitle());
     if (1&&(title.Length()>0)) {
-      res = eev->GetHeader()->GetUniqueID();
+      res = ((AliVAODHeader*)eev->GetHeader())->GetUniqueID();
       res &= 0x4FFFFFFF;
     } else {
       res = IsCollisionCandidate(eev); 
     }
   } else {
     aev = dynamic_cast<const AliAODEvent*>(obj);
-    res = aev->GetHeader()->GetOfflineTrigger();
+    res = ((AliVAODHeader*)aev->GetHeader())->GetOfflineTrigger();
   }
 
   // return 0, if 0 found
index 1d397bc36a948f0836ded4d3bf0c2ccc739649a2..b3303c35f731ffff8a5124d285b1c0c695114977 100644 (file)
@@ -5,6 +5,7 @@
 // Author: J.Kral
 #include <TClonesArray.h>
 #include <TArrayI.h>
+#include <THashList.h>
 #include "AliAODCaloTrigger.h"
 #include "AliEMCALGeometry.h"
 #include "AliEMCALTriggerTypes.h"
@@ -16,6 +17,9 @@
 #include "AliVVZERO.h"
 #include "AliEmcalTriggerMaker.h"
 
+#include "THistManager.h"
+#include "TString.h"
+
 ClassImp(AliEmcalTriggerMaker)
 
 using namespace std;
@@ -30,18 +34,19 @@ AliEmcalTriggerMaker::AliEmcalTriggerMaker() :
   fCaloTriggerSetupOut(0),
   fSimpleOfflineTriggers(0),
   fV0(0),
-  fITrigger(0)
+  fITrigger(0),
+  fDoQA(kFALSE),
+  fQAHistos(NULL)
 {
   // Constructor.
   memset(fThresholdConstants, 0, sizeof(Int_t) * 12);
   memset(fPatchADCSimple, 0, sizeof(Int_t) * kPatchCols * kPatchRows);
   memset(fPatchADC, 0, sizeof(Int_t) * kPatchCols * kPatchRows);
-  memset(fPatchAmplitude, 0, sizeof(Float_t) * kPatchCols * kPatchRows);
 }
 
 //________________________________________________________________________
-AliEmcalTriggerMaker::AliEmcalTriggerMaker(const char *name) : 
-  AliAnalysisTaskEmcal(name,kFALSE),
+AliEmcalTriggerMaker::AliEmcalTriggerMaker(const char *name, Bool_t doQA) :
+  AliAnalysisTaskEmcal(name,doQA),
   fCaloTriggersOutName("EmcalTriggers"),
   fCaloTriggerSetupOutName("EmcalTriggersSetup"),
   fV0InName("AliAODVZERO"),
@@ -49,13 +54,14 @@ AliEmcalTriggerMaker::AliEmcalTriggerMaker(const char *name) :
   fCaloTriggerSetupOut(0),
   fSimpleOfflineTriggers(0),
   fV0(0),
-  fITrigger(0)
+  fITrigger(0),
+  fDoQA(doQA),
+  fQAHistos(NULL)
 {
   // Constructor.
-         memset(fThresholdConstants, 0, sizeof(Int_t) * 12);
-         memset(fPatchADCSimple, 0, sizeof(Int_t) * kPatchCols * kPatchRows);
-         memset(fPatchADC, 0, sizeof(Int_t) * kPatchCols * kPatchRows);
-         memset(fPatchAmplitude, 0, sizeof(Float_t) * kPatchCols * kPatchRows);
+  memset(fThresholdConstants, 0, sizeof(Int_t) * 12);
+  memset(fPatchADCSimple, 0, sizeof(Int_t) * kPatchCols * kPatchRows);
+  memset(fPatchADC, 0, sizeof(Int_t) * kPatchCols * kPatchRows);
 }
 
 //________________________________________________________________________
@@ -111,6 +117,28 @@ void AliEmcalTriggerMaker::ExecOnce()
   fSimpleOfflineTriggers->Allocate(0);
 }
 
+//________________________________________________________________________
+void AliEmcalTriggerMaker::UserCreateOutputObjects()
+{
+  // Do basic QA monitoring (if requested)
+  AliAnalysisTaskEmcal::UserCreateOutputObjects();
+
+  if(fDoQA){
+    fQAHistos = new THistManager("TriggerQA");
+
+    TString trtypenames[3] = {"EJE", "EGA", "EL0"};
+    for(int itype = 0; itype < 3; itype++){
+      fQAHistos->CreateTH2(Form("RCPos%s", trtypenames[itype].Data()), Form("Lower edge position of %s patches (col-row)", trtypenames[itype].Data()), 48, -0.5, 47.5, 64, -0.5, 63.5);
+      fQAHistos->CreateTH2(Form("EPCentPos%s", trtypenames[itype].Data()), Form("Center position of the %s trigger patches", trtypenames[itype].Data()), 20, -0.8, 0.8, 100., 1., 4.);
+      fQAHistos->CreateTH2(Form("PatchADCvsE%s", trtypenames[itype].Data()), Form("Patch ADC value for trigger type %s", trtypenames[itype].Data()), 200, 0., 200, 200, 0., 200);
+    }
+    fQAHistos->CreateTH1("triggerBitsAll", "Trigger bits for all incoming patches", 64, -0.5, 63.5);
+    fQAHistos->CreateTH1("triggerBitsSel", "Trigger bits for reconstructed patches", 64, -0.5, 63.5);
+    fOutput->Add(fQAHistos->GetListOfHistograms());
+    PostData(1, fOutput);
+  }
+}
+
 //________________________________________________________________________
 Bool_t AliEmcalTriggerMaker::Run() 
 {
@@ -156,7 +184,6 @@ Bool_t AliEmcalTriggerMaker::Run()
   if (fCaloTriggers->GetEntries() > 0) {
     // zero the arrays
     memset(fPatchADC, 0, sizeof(Int_t) * kPatchCols * kPatchRows);
-    memset(fPatchAmplitude, 0, sizeof(Float_t) * kPatchCols * kPatchRows);
 
     // go throuth the trigger channels
     while (fCaloTriggers->Next()) {
@@ -164,12 +191,6 @@ Bool_t AliEmcalTriggerMaker::Run()
       // A0 left bottom (0,0)
       Int_t globCol=-1, globRow=-1;
       fCaloTriggers->GetPosition(globCol, globRow);
-      // Look at L0 information
-      Float_t amp = -1;
-      if(CheckForL0(*fCaloTriggers))
-         fCaloTriggers->GetAmplitude(amp);
-      if(amp > -1)
-        fPatchAmplitude[globCol][globRow]  = amp;
       // for some strange reason some ADC amps are initialized in reconstruction
       // as -1, neglect those 
       Int_t adcAmp=-1;
@@ -330,12 +351,24 @@ AliEmcalTriggerPatchInfo* AliEmcalTriggerMaker::ProcessPatch(TriggerMakerTrigger
     fCaloTriggers->GetTriggerBits(tBits);
   else
     fSimpleOfflineTriggers->GetTriggerBits(tBits);
+
+  Int_t nBitsFound = 0;
+  Int_t bitsFound[64];
+  if(fDoQA){
+    for(unsigned int ibit = 0; ibit < sizeof(tBits)*8; ibit++) {
+      if(tBits & (1 << ibit)){
+        bitsFound[nBitsFound++] = ibit;
+        fQAHistos->FillTH1("triggerBitsAll", ibit);
+      }
+    }
+  }
        
   if ((type == kTMEMCalJet    && !IsEJE( tBits )) || 
       (type == kTMEMCalGamma  && !IsEGA( tBits )) || 
-      (type == kTMEMCalLevel0 && !(IsLevel0(tBits) || CheckForL0(*fCaloTriggers))))
+      (type == kTMEMCalLevel0 && !(CheckForL0(*fCaloTriggers))))
     return 0;
-       
+  TString trtypenames[3] = {"EJE", "EGA", "EL0"}; // For QA
+
   // save primary vertex in vector
   TVector3 vertex;
   vertex.SetXYZ(fVertex[0], fVertex[1], fVertex[2]);
@@ -383,7 +416,7 @@ AliEmcalTriggerPatchInfo* AliEmcalTriggerMaker::ProcessPatch(TriggerMakerTrigger
          // add the STU ADCs in the patch (in case of L1) or the TRU Amplitude (in case of L0)
          if (!isOfflineSimple )
              if(type == kTMEMCalLevel0){
-               adcAmp += static_cast<Int_t>(fPatchAmplitude[globCol+i][globRow+j]); // precision loss in case of global integer field
+               adcAmp += fPatchADC[globCol+i][globRow+j] * 4; // precision loss in case of global integer field
              } else
                adcAmp += fPatchADC[globCol+i][globRow+j];
          else
@@ -517,6 +550,15 @@ AliEmcalTriggerPatchInfo* AliEmcalTriggerMaker::ProcessPatch(TriggerMakerTrigger
   trigger->SetTriggerBits(tBits);
   trigger->SetOffSet(offSet);
   trigger->SetEdgeCell(globCol*2, globRow*2); // from triggers to cells
+  if(fDoQA){
+    fQAHistos->FillTH2(Form("RCPos%s", trtypenames[type].Data()), globCol, globRow);
+    fQAHistos->FillTH2(Form("EPCentPos%s", trtypenames[type].Data()), centerGeo.Eta(), centerGeo.Phi());
+    fQAHistos->FillTH2(Form("PatchADCvsE%s", trtypenames[type].Data()), adcAmp, trigger->GetPatchE());
+    if(nBitsFound){
+      for(int ibit = 0; ibit < nBitsFound; ibit++)
+        fQAHistos->FillTH1("triggerBitsSel", bitsFound[ibit]);
+    }
+  }
   return trigger;
 }
 
@@ -620,20 +662,28 @@ Bool_t AliEmcalTriggerMaker::NextTrigger(Bool_t &isOfflineSimple)
 
 //________________________________________________________________________
 Bool_t AliEmcalTriggerMaker::CheckForL0(const AliVCaloTrigger& trg) const {
-  // Check from the level0 times if the trigger has fired at level0
-  Int_t nl0times(0);
-  Bool_t l0fired(kFALSE);
-  trg.GetNL0Times(nl0times);
-  if(nl0times){
-    TArrayI l0times(nl0times);
-       trg.GetL0Times(l0times.GetArray());
-       // Apply timing cut to see if a L0 has fired
-       for(Int_t *l0timeIter = l0times.GetArray(); l0timeIter < l0times.GetArray() + l0times.GetSize(); l0timeIter++){
-         if(*l0timeIter > 7 && *l0timeIter < 10){
-           l0fired = kTRUE;
-           break;
-         }
+  // Check whether the patch is a level0 patch
+  if(MCEvent()){
+    // For Monte-Carlo select
+    Int_t tbits(-1);
+    trg.GetTriggerBits(tbits);
+    return tbits & (1 << kL0);
+  } else {
+    // For Data check from the level0 times if the trigger has fired at level0
+    Int_t nl0times(0);
+    Bool_t l0fired(kFALSE);
+    trg.GetNL0Times(nl0times);
+    if(nl0times){
+      TArrayI l0times(nl0times);
+      trg.GetL0Times(l0times.GetArray());
+      // Apply timing cut to see if a L0 has fired
+      for(Int_t *l0timeIter = l0times.GetArray(); l0timeIter < l0times.GetArray() + l0times.GetSize(); l0timeIter++){
+        if(*l0timeIter > 7 && *l0timeIter < 10){
+          l0fired = kTRUE;
+          break;
+        }
+      }
     }
+    return l0fired;
   }
-  return l0fired;
 }
index 5a03e6627a9bd40c467afa5cf812da432a699221..5d7d5141606d78122905b5e423509ec63f7a5870 100644 (file)
@@ -7,6 +7,7 @@ class TClonesArray;
 class AliEmcalTriggerSetupInfo;
 class AliAODCaloTrigger;
 class AliVVZERO;
+class THistManager;
 
 #include "AliEMCALTriggerTypes.h"
 #include "AliAnalysisTaskEmcal.h"
@@ -19,7 +20,7 @@ class AliEmcalTriggerMaker : public AliAnalysisTaskEmcal {
     kTMEMCalLevel0 = 2
   };
   AliEmcalTriggerMaker();
-  AliEmcalTriggerMaker(const char *name);
+  AliEmcalTriggerMaker(const char *name, Bool_t doQA = kFALSE);
   virtual ~AliEmcalTriggerMaker();
 
   void SetCaloTriggersOutName(const char *name)     { fCaloTriggersOutName      = name; }
@@ -39,12 +40,13 @@ class AliEmcalTriggerMaker : public AliAnalysisTaskEmcal {
          kPatchCols = 48,
          kPatchRows = 64
   };
+  void                       UserCreateOutputObjects();
   void                       ExecOnce();
   Bool_t                     Run();
   void                       RunSimpleOfflineTrigger();
   Bool_t                     NextTrigger( Bool_t &isOfflineSimple );
   AliEmcalTriggerPatchInfo*  ProcessPatch(TriggerMakerTriggerType_t type, Bool_t isOfflineSimple);
-  Bool_t                                        CheckForL0(const AliVCaloTrigger &trg) const;
+  Bool_t                                                  CheckForL0(const AliVCaloTrigger &trg) const;
 
   TString                    fCaloTriggersOutName;      // name of output track array
   TString                    fCaloTriggerSetupOutName;  // name of output track array
@@ -56,8 +58,9 @@ class AliEmcalTriggerMaker : public AliAnalysisTaskEmcal {
   AliVVZERO                 *fV0;                       //!V0 object
   Double_t                   fPatchADCSimple[kPatchCols][kPatchRows];   //!patch map for simple offline trigger
   Int_t                      fPatchADC[kPatchCols][kPatchRows];         //!ADC values map
-  Float_t                                       fPatchAmplitude[kPatchCols][kPatchRows];       //!Trigger patch amplituded(for L0 triggers)
   Int_t                      fITrigger;                 //!trigger counter
+  Bool_t                     fDoQA;                     // Fill QA histograms
+  THistManager              *fQAHistos;                 //! Histograms for QA
 
  private:
   AliEmcalTriggerMaker(const AliEmcalTriggerMaker&);            // not implemented
diff --git a/PWG/EMCAL/macros/AddTaskEmcalPatchFromCellMaker.C b/PWG/EMCAL/macros/AddTaskEmcalPatchFromCellMaker.C
new file mode 100644 (file)
index 0000000..c7637cf
--- /dev/null
@@ -0,0 +1,71 @@
+// $Id$
+
+AliEmcalPatchFromCellMaker* AddTaskEmcalPatchFromCellMaker(
+  Int_t       patchDim            = 32,
+  Double_t    cellMinE            = 0.15,
+  Bool_t      bSlideL1            = kFALSE,
+  const char *patchOutName        = "EmcalPatches",
+  const char *cellsName           = 0,
+  const char *taskName            = "PatchFromCellMaker")
+{  
+  // Get the pointer to the existing analysis manager via the static access method.
+  //==============================================================================
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+  if (!mgr)
+  {
+    ::Error("AddTaskEmcalPatchFromCellMaker", "No analysis manager to connect to.");
+    return NULL;
+  }  
+  
+  // Check the analysis type using the event handlers connected to the analysis manager.
+  //==============================================================================
+  AliVEventHandler *evhand = mgr->GetInputEventHandler();
+  if (!evhand) {
+    ::Error("AddTaskEmcalPatchFromCellMaker", "This task requires an input event handler");
+    return NULL;
+  }
+
+  TString strCellsName(cellsName);
+  if(strCellsName.IsNull()) {
+    if (evhand->InheritsFrom("AliESDInputHandler")) {
+      strCellsName = "EMCALCells";
+      ::Info("AddTaskEmcalPatchFromCellMaker", Form( "ESD analysis, cellsName = \"%s\"", strCellsName.Data() ));
+    }
+    else {
+      strCellsName = "emcalCells";
+      ::Info("AddTaskEmcalPatchFromCellMaker", Form( "AOD analysis, cellsName = \"%s\"", strCellsName.Data() ));
+    }
+  }
+
+  TString strPatchOutName = Form("%s%dx%d",patchOutName,patchDim,patchDim);
+  TString name = Form("%s_%s",taskName,strPatchOutName.Data());
+   //-------------------------------------------------------
+  // Init the task and do settings
+  //-------------------------------------------------------
+
+  AliEmcalPatchFromCellMaker *eTask = new AliEmcalPatchFromCellMaker(name);
+  eTask->SetCaloTriggersOutName(strPatchOutName.Data());
+  eTask->SetCaloCellsName(strCellsName.Data());
+  eTask->SetPatchDimension(patchDim);
+  eTask->SetMinCellE(cellMinE);
+  eTask->ActivateSlidingPatch(bSlideL1);
+
+  //-------------------------------------------------------
+  // Final settings, pass to manager and set the containers
+  //-------------------------------------------------------
+  mgr->AddTask(eTask);
+  
+  // Create containers for input/output
+  AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
+  TString contname(name);
+  contname += "_histos";
+  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(),
+                                                           TList::Class(),AliAnalysisManager::kOutputContainer,
+                                                           Form("%s", AliAnalysisManager::GetCommonFileName()));
+
+  mgr->ConnectInput  (eTask, 0,  cinput1 );
+  mgr->ConnectOutput (eTask, 1, coutput1 );
+
+  return eTask;
+}
index 286935bf936df0bcc6a7fe1320cc07de5cfaca9a..1eaca4d19c8e710a4673bd3580824a316ea98200 100644 (file)
@@ -11,7 +11,8 @@ AliEmcalTriggerMaker* AddTaskEmcalTriggerMaker(
   int jetLowC                     = 0,
   int jetHighA                    = 0,
   int jetHighB                    = 0,
-  int jetHighC                    = 0
+  int jetHighC                    = 0,
+  bool doQA                       = kFALSE
 )
 {  
   // Get the pointer to the existing analysis manager via the static access method.
@@ -71,7 +72,7 @@ AliEmcalTriggerMaker* AddTaskEmcalTriggerMaker(
   // Init the task and do settings
   //-------------------------------------------------------
 
-  AliEmcalTriggerMaker *eTask = new AliEmcalTriggerMaker(taskName);
+  AliEmcalTriggerMaker *eTask = new AliEmcalTriggerMaker(taskName, doQA);
   eTask->SetCaloTriggersName(strTriggersName.Data());
   eTask->SetCaloTriggersOutName(triggersOutName);
   eTask->SetCaloTriggerSetupOutName(triggerSetupOutName);
@@ -88,6 +89,11 @@ AliEmcalTriggerMaker* AddTaskEmcalTriggerMaker(
   // Create containers for input/output
   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
   mgr->ConnectInput  (eTask, 0,  cinput1 );
-  
+
+  if(doQA){
+    TString commonoutput = mgr->GetCommonFileName();
+    commonoutput += ":TriggerQA";
+    mgr->ConnectOutput(eTask, 1, mgr->CreateContainer("TriggerQA", TList::Class(), AliAnalysisManager::kOutputContainer, commonoutput.Data()));
+  }
   return eTask;
 }
index 81d4263c11296df219a61093d362b4d18fb1a61c..fed211d79720bbf6e1f51aad56618766a6bced21 100644 (file)
@@ -768,7 +768,8 @@ void AliAnalysisTaskFlowEPCascade::UserExec(Option_t *)
 
     //At the momment the cutting class does not handle AOD event properly
     //so we are doing the cuts explicitly here
-    AliAODHeader *aodHeader = fAOD->GetHeader();
+    AliAODHeader *aodHeader = dynamic_cast<AliAODHeader*>(fAOD->GetHeader());
+    if(!aodHeader) AliFatal("Not a standard AOD");
     if(!aodHeader) return;
     AliCentrality *centrality = aodHeader->GetCentralityP();
     if(!centrality) return;
@@ -1433,7 +1434,7 @@ void AliAnalysisTaskFlowEPCascade::ReadFromESDv0(AliESDEvent *fESD){
 
 void AliAnalysisTaskFlowEPCascade::ReadFromAODv0(AliAODEvent *fAOD){
 
-  AliEventplane * ep = (fAOD->GetHeader())->GetEventplaneP();
+  AliEventplane * ep = ((AliVAODHeader*)fAOD->GetHeader())->GetEventplaneP();
   Double_t psiTPC = ep->GetEventplane("Q", fAOD, 2); // in range of [0, pi]
   //  if(psiTPC > TMath::PiOver2()) 
   //  psiTPC -= TMath::Pi();
index 2c6ffccff5a885beba38acbc16132b55a3dc1cae..f294786714e1bbb718a7ee6d41fe891045e269ad 100644 (file)
@@ -192,7 +192,8 @@ void AliAnalysisTaskFlowEventforRP::UserExec(Option_t *)
 
     
     // Update the header
-    AliAODHeader* header = AODEvent()->GetHeader();
+    AliAODHeader* header = dynamic_cast<AliAODHeader*>(AODEvent()->GetHeader());
+    if(!header) AliFatal("Not a standard AOD");
     header->SetRunNumber(esd->GetRunNumber());
     header->SetQTheta(dRP,1);
         
index bc2e95e2bd6b701124f4d3735cd6958dade6955a..44646f67edb35fd61adcaf21359e42a3e49a91d3 100644 (file)
@@ -876,7 +876,7 @@ Bool_t AliAnalysisTaskFlowStrange::AcceptAAEvent(AliESDEvent*) {
 //=======================================================================
 Bool_t AliAnalysisTaskFlowStrange::MinimumRequirementsAA(AliAODEvent *tAOD) {
   fRunNumber = tAOD->GetRunNumber();
-  AliCentrality *cent = tAOD->GetHeader()->GetCentralityP();
+  AliCentrality *cent = ((AliVAODHeader*)tAOD->GetHeader())->GetCentralityP();
   fV0M = cent->GetCentralityPercentile("V0M");
   fTRK = cent->GetCentralityPercentile("TRK");
   TString mycent = fCentMethod;
@@ -978,7 +978,8 @@ Int_t AliAnalysisTaskFlowStrange::GetReferenceMultiplicity() { //toberefined
   Int_t rawN = tAOD->GetNumberOfTracks();
   Int_t ref=0;
   for(Int_t id=0; id!=rawN; ++id) {
-    track = tAOD->GetTrack(id);
+    track = dynamic_cast<AliAODTrack*>(tAOD->GetTrack(id));
+    if(!track) AliFatal("Not a standard AOD");
     if(!track->TestFilterBit(fRFPFilterBit)) continue;
     ++ref;
   }
@@ -989,9 +990,9 @@ Bool_t AliAnalysisTaskFlowStrange::AcceptPAEvent(AliAODEvent*) {
   // PA reading discontinued: TO BE UPDATED
   /*
   //if(aod->GetHeader()->GetEventNumberESDFile() == 0) return; //rejecting first chunk NOT NEEDED ANYMORE
-  Int_t bc2 = tAOD->GetHeader()->GetIRInt2ClosestInteractionMap();
+  Int_t bc2 = ((AliVAODHeader*)tAOD->GetHeader())->GetIRInt2ClosestInteractionMap();
   if(bc2!=0) return kFALSE;
-  Int_t bc1 = tAOD->GetHeader()->GetIRInt1ClosestInteractionMap();
+  Int_t bc1 = ((AliVAODHeader*)tAOD->GetHeader())->GetIRInt1ClosestInteractionMap();
   if(bc1!=0) return kFALSE;
   Short_t isPileup = tAOD->IsPileupFromSPD(5);
   if(isPileup!=0) return kFALSE;
@@ -1724,7 +1725,7 @@ void AliAnalysisTaskFlowStrange::ChargeParticles(AliAODEvent *tAOD) {
     ReadStack(mcArray);
   }
   for(int i=0; i!=tAOD->GetNumberOfTracks(); ++i) {
-    AliAODTrack *t = tAOD->GetTrack( i );
+    AliAODTrack *t = dynamic_cast<AliAODTrack*>(tAOD->GetTrack( i ));
     if(!t) continue;
     if( !t->TestFilterBit(1) ) continue;
     fDecayMass=0.0; // using mass as nsigmas control plot
@@ -2271,7 +2272,8 @@ void AliAnalysisTaskFlowStrange::MakeQTPC(AliAODEvent *tAOD) {
   //=>looping
   Int_t rawN = tAOD->GetNumberOfTracks();
   for(Int_t id=0; id!=rawN; ++id) {
-    track = tAOD->GetTrack(id);
+    track = dynamic_cast<AliAODTrack*>(tAOD->GetTrack(id));
+    if(!track) AliFatal("Not a standard AOD");
     //=>cuts
     if(!track->TestFilterBit(fRFPFilterBit)) continue;
     if( fExcludeTPCEdges )
@@ -2818,7 +2820,7 @@ void AliAnalysisTaskFlowStrange::SaveVZEROResponse() {
 Int_t AliAnalysisTaskFlowStrange::RefMult(AliAODEvent *tAOD, Int_t fb) {
   Int_t found = 0;
   for(int i=0; i!=tAOD->GetNumberOfTracks(); ++i) {
-    AliAODTrack *t = tAOD->GetTrack( i );
+    AliAODTrack *t = dynamic_cast<AliAODTrack*>(tAOD->GetTrack( i ));
     if(!t) continue;
     if( !t->TestFilterBit(fb) ) continue;
     if( t->Eta()<-0.8 || t->Eta()>+0.8 ) continue;
@@ -2836,7 +2838,7 @@ Int_t AliAnalysisTaskFlowStrange::RefMultTPC() {
   if(!ev) return -1;
   Int_t found = 0;
   for(int i=0; i!=ev->GetNumberOfTracks(); ++i) {
-    AliAODTrack *t = ev->GetTrack( i );
+    AliAODTrack *t = dynamic_cast<AliAODTrack*>(ev->GetTrack( i ));
     if(!t) continue;
     if( !t->TestFilterBit(1) ) continue;
     if( t->Eta()<-0.8 || t->Eta()>+0.8 ) continue;
@@ -2854,7 +2856,7 @@ Int_t AliAnalysisTaskFlowStrange::RefMultGlobal() {
   if(!ev) return -1;
   Int_t found = 0;
   for(int i=0; i!=ev->GetNumberOfTracks(); ++i) {
-    AliAODTrack *t = ev->GetTrack( i );
+    AliAODTrack *t = dynamic_cast<AliAODTrack*>(ev->GetTrack( i ));
     if(!t) continue;
     if( !t->TestFilterBit(16) ) continue;
     if( t->Eta()<-0.8 || t->Eta()>+0.8 ) continue;
diff --git a/PWG/FLOW/Tasks/AliAnalysisTaskPIDconfig.cxx b/PWG/FLOW/Tasks/AliAnalysisTaskPIDconfig.cxx
new file mode 100644 (file)
index 0000000..5918241
--- /dev/null
@@ -0,0 +1,577 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/* $Id: AliAnalysisTaskPIDconfig.cxx 43811 2014-10-11 Naghmeh Mohammadi $ */
+
+#include "TChain.h"
+#include "TTree.h"
+#include "TList.h"
+#include "TMath.h"
+#include "TObjArray.h"
+#include "TCanvas.h"
+#include "TGraphErrors.h"
+#include "TString.h"
+#include "TFile.h"
+#include "TH1F.h"
+#include "TH2F.h"
+#include "TH3F.h" 
+#include "TH2D.h"                  
+#include "TH3D.h"
+#include "TArrayF.h"
+#include "TF1.h"
+#include "TROOT.h"
+#include "stdio.h"
+#include "TCutG.h"
+
+
+#include "AliTHn.h"
+#include "AliLog.h"
+#include "AliAnalysisManager.h"
+#include "AliESDEvent.h"
+#include "AliAODInputHandler.h"
+#include "AliAODEvent.h"
+#include "AliAODTrack.h"
+#include "AliAODInputHandler.h"
+#include "AliCollisionGeometry.h"
+#include "AliGenEventHeader.h"
+#include "AliAnalysisUtils.h"
+#include "AliPIDCombined.h"        
+#include "AliAnalysisTask.h"
+#include "AliAODHandler.h"
+#include <AliInputEventHandler.h>
+#include <AliVEventHandler.h>
+#include <AliVParticle.h>
+#include <AliVTrack.h>
+#include <AliTPCPIDResponse.h>
+#include <AliTOFPIDResponse.h>
+#include "AliAnalysisTaskPIDconfig.h"
+#include "AliAnalysisTaskSE.h"
+#include "AliAODPid.h"
+#include "AliPhysicsSelection.h"
+#include "AliCentralitySelectionTask.h"
+#include "AliCentrality.h"
+#include "AliKFParticle.h"
+#include "AliKFVertex.h"
+#include "AliPID.h"
+#include "AliPIDResponse.h"
+#include "AliCFContainer.h"
+#include "AliCFManager.h"
+#include "AliVEvent.h"
+#include "AliAODVZERO.h"
+
+
+ClassImp(AliAnalysisTaskPIDconfig)
+//ClassImp()
+//___________________________________________________________________
+AliAnalysisTaskPIDconfig::AliAnalysisTaskPIDconfig():
+AliAnalysisTaskSE(),
+fVevent(0),
+fESD(0),
+fAOD(0),
+fPIDResponse(0),
+fTriggerSelection(0),
+fCentralityPercentileMin(0.),
+fCentralityPercentileMax(5.),
+fFilterBit(128),
+fDCAxyCut(-1),
+fDCAzCut(-1),
+fData2011(kFALSE),
+fTriggerMB(kTRUE),
+fTriggerCentral(kFALSE),
+fUseCentrality(kTRUE),
+fCutTPCmultiplicityOutliersAOD(kFALSE),
+fPIDcuts(kFALSE),
+fCentralityEstimator("V0M"),
+fContourCutList(0),
+fListQA(0x0),
+fListQAtpctof(0x0),
+fListQAInfo(0x0),
+fhistCentralityPass(0),
+fNoEvents(0),
+fpVtxZ(0),
+fhistDCABefore(0),
+fhistDCAAfter(0),
+fhistPhiDistBefore(0),
+fhistPhiDistAfter(0),
+fhistEtaDistBefore(0),
+fhistEtaDistAfter(0),
+fTPCvsGlobalMultBeforeOutliers(0),
+fTPCvsGlobalMultAfterOutliers(0),
+fTPCvsGlobalMultAfter(0),
+fHistBetavsPTOFbeforePID(0),
+fHistdEdxVsPTPCbeforePID(0),
+fHistBetavsPTOFafterPID(0),
+fHistdEdxVsPTPCafterPID(0),
+fhistNsigmaP(0),
+fhistNsigmaPt(0)
+//fSparseSpecies(0),
+//fvalueSpecies(0)
+{
+    //Dummy Constructor
+}
+
+
+//
+
+AliAnalysisTaskPIDconfig::AliAnalysisTaskPIDconfig(const char *name):
+AliAnalysisTaskSE(name),
+fVevent(0),
+fESD(0),
+fAOD(0),
+fPIDResponse(0),
+fTriggerSelection(0),
+fCentralityPercentileMin(0.),
+fCentralityPercentileMax(5.),
+fFilterBit(1),
+fDCAxyCut(-1),
+fDCAzCut(-1),
+fData2011(kFALSE),
+fTriggerMB(kTRUE),
+fTriggerCentral(kFALSE),
+fUseCentrality(kTRUE),
+fCutTPCmultiplicityOutliersAOD(kFALSE),
+fPIDcuts(kFALSE),
+fCentralityEstimator("V0M"),
+fContourCutList(0),
+fListQA(0x0),
+fListQAtpctof(0x0),
+fListQAInfo(0x0),
+fhistCentralityPass(0),
+fNoEvents(0),
+fpVtxZ(0),
+fhistDCABefore(0),
+fhistDCAAfter(0),
+fhistPhiDistBefore(0),
+fhistPhiDistAfter(0),
+fhistEtaDistBefore(0),
+fhistEtaDistAfter(0),
+fTPCvsGlobalMultBeforeOutliers(0),
+fTPCvsGlobalMultAfterOutliers(0),
+fTPCvsGlobalMultAfter(0),
+fHistBetavsPTOFbeforePID(0),
+fHistdEdxVsPTPCbeforePID(0),
+fHistBetavsPTOFafterPID(0),
+fHistdEdxVsPTPCafterPID(0),
+fhistNsigmaP(0),
+fhistNsigmaPt(0)
+//fSparseSpecies(0),
+//fvalueSpecies(0)
+{
+    //fvalueSpecies = new Double_t[9];
+    //Default Constructor
+    DefineInput(0,TChain::Class());
+    DefineOutput(1,TList::Class());
+}
+
+//_____________________________________________________________________
+AliAnalysisTaskPIDconfig::~AliAnalysisTaskPIDconfig()
+{
+    //Destructor
+    
+ //   delete fPID;
+  //  delete fPIDqa;
+ //   delete fTrackCuts;
+   // delete fSparseSpecies;
+    //delete []fvalueSpecies;
+
+
+}
+//______________________________________________________________________
+void AliAnalysisTaskPIDconfig::UserCreateOutputObjects()
+{
+    //
+    // Create the output QA objects
+    //
+    
+    AliLog::SetClassDebugLevel("AliAnalysisTaskPIDconfig",10);
+    
+    //input hander
+    AliAnalysisManager *mgr=AliAnalysisManager::GetAnalysisManager();
+    AliInputEventHandler *inputHandler=dynamic_cast<AliInputEventHandler*>(mgr->GetInputEventHandler());
+    if (!inputHandler) AliFatal("Input handler needed");
+    
+    //pid response object
+    fPIDResponse=inputHandler->GetPIDResponse();
+    if (!fPIDResponse) AliError("PIDResponse object was not created");
+    
+    //
+    fListQA=new TList;
+    fListQA->SetOwner();
+    
+    fListQAtpctof=new TList;
+    fListQAtpctof->SetOwner();
+    fListQAtpctof->SetName("PID_TPC_TOF");
+    
+    fListQAInfo=new TList;
+    fListQAInfo->SetOwner();
+    fListQAInfo->SetName("Event_Track_Info");
+    
+    fListQA->Add(fListQAtpctof);
+    fListQA->Add(fListQAInfo);
+    
+    SetupTPCTOFqa();
+    SetupEventInfo();
+    
+    PostData(1,fListQA);
+}
+//______________________________________________________________________
+void AliAnalysisTaskPIDconfig::UserExec(Option_t*){
+    //Main loop
+    //Called for each event
+    
+    // create pointer to event
+    fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
+    fESD = dynamic_cast<AliESDEvent*>(InputEvent());
+    
+    Int_t ntracks=fAOD->GetNumberOfTracks();
+
+
+    if(!(fESD || fAOD)){
+        printf("ERROR: fESD & fAOD not available\n");
+        return;
+    }
+    fVevent = dynamic_cast<AliVEvent*>(InputEvent());
+    if (!fVevent) {
+        printf("ERROR: fVevent not available\n");
+        return;
+    }
+    
+    Bool_t pass = kFALSE;
+    
+    CheckCentrality(fVevent,pass);
+    
+    if(!pass){ return;}
+    
+    const AliVVertex *pVtx = fVevent->GetPrimaryVertex();
+    
+    Double_t pVtxZ = -999;
+    pVtxZ = pVtx->GetZ();
+    
+    if(TMath::Abs(pVtxZ)>10) return;
+
+    TH1F *hNoEvents = (TH1F*)fListQAInfo->At(1);
+    TH1F *histpVtxZ = (TH1F*)fListQAInfo->At(2);
+
+    if(hNoEvents) hNoEvents->Fill(0);
+    if(histpVtxZ) histpVtxZ->Fill(pVtxZ);
+
+    if(ntracks<2) return;
+    
+   // if(!pass) return;
+    
+    TH2F *HistTPCvsGlobalMultBeforeOutliers = (TH2F*)fListQAInfo->At(3);
+
+    TH2F *HistTPCvsGlobalMultAfterOutliers = (TH2F*)fListQAInfo->At(4);
+
+    
+    Float_t multTPC(0.); // tpc mult estimate
+    Float_t multGlobal(0.); // global multiplicity
+    
+    const Int_t nGoodTracks = fVevent->GetNumberOfTracks();
+    if(!fData2011) { // cut on outliers
+      
+        for(Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++) { // fill tpc mult
+            AliAODTrack* AODtrack =dynamic_cast<AliAODTrack*>(fVevent->GetTrack(iTrack));
+            if (!AODtrack) continue;
+            if (!(AODtrack->TestFilterBit(1))) continue;
+            if ((AODtrack->Pt() < .2) || (AODtrack->Pt() > 5.0) || (TMath::Abs(AODtrack->Eta()) > .8) || (AODtrack->GetTPCNcls() < 70)  || (AODtrack->GetDetPid()->GetTPCsignal() < 10.0) || (AODtrack->Chi2perNDF() < 0.2)) continue;
+            multTPC++;
+        }//track loop
+
+        for(Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++) { // fill global mult
+            AliAODTrack *AODtrack=dynamic_cast<AliAODTrack*>(fVevent->GetTrack(iTrack));
+            if (!AODtrack) continue;
+            if (!(AODtrack->TestFilterBit(16))) continue;
+            if ((AODtrack->Pt() < .2) || (AODtrack->Pt() > 5.0) || (TMath::Abs(AODtrack->Eta()) > .8) || (AODtrack->GetTPCNcls() < 70) || (AODtrack->GetDetPid()->GetTPCsignal() < 10.0) || (AODtrack->Chi2perNDF() < 0.1)) continue;
+            Double_t b[2] = {-99., -99.};
+            Double_t bCov[3] = {-99., -99., -99.};
+            AliAODTrack copy(*AODtrack);
+            if (!(copy.PropagateToDCA(fVevent->GetPrimaryVertex(), fVevent->GetMagneticField(), 100., b, bCov))) continue;
+            if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3)) continue;
+            multGlobal++;
+        } //track loop
+        
+        HistTPCvsGlobalMultBeforeOutliers->Fill(multGlobal,multTPC);
+
+        if(multTPC < (-40.3+1.22*multGlobal) || multTPC > (32.1+1.59*multGlobal)){ pass = kFALSE;}
+        
+        if(!pass) return;
+        HistTPCvsGlobalMultAfterOutliers->Fill(multGlobal,multTPC);
+
+    }
+    
+    
+    if(fData2011) { // cut on outliers
+        //Float_t multTPC(0.); // tpc mult estimate
+        //Float_t multGlob(0.); // global multiplicity
+        for(Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++) { // fill tpc mult
+            AliAODTrack *AODtrack=dynamic_cast<AliAODTrack*>(fVevent->GetTrack(iTrack));
+            if (!AODtrack) continue;
+            if (!(AODtrack->TestFilterBit(1))) continue;
+            if ((AODtrack->Pt() < .2) || (AODtrack->Pt() > 5.0) || (TMath::Abs(AODtrack->Eta()) > .8) || (AODtrack->GetTPCNcls() < 70)  || (AODtrack->GetDetPid()->GetTPCsignal() < 10.0) || (AODtrack->Chi2perNDF() < 0.2)) continue;
+            multTPC++;
+        }
+        for(Int_t iTrack = 0; iTrack < nGoodTracks; iTrack++) { // fill global mult
+            AliAODTrack *AODtrack=dynamic_cast<AliAODTrack*>(fVevent->GetTrack(iTrack));
+            if (!AODtrack) continue;
+            if (!(AODtrack->TestFilterBit(16))) continue;
+            if ((AODtrack->Pt() < .2) || (AODtrack->Pt() > 5.0) || (TMath::Abs(AODtrack->Eta()) > .8) || (AODtrack->GetTPCNcls() < 70) || (AODtrack->GetDetPid()->GetTPCsignal() < 10.0) || (AODtrack->Chi2perNDF() < 0.1)) continue;
+            Double_t b[2] = {-99., -99.};
+            Double_t bCov[3] = {-99., -99., -99.};
+            AliAODTrack copy(*AODtrack);
+            if (!(copy.PropagateToDCA(fVevent->GetPrimaryVertex(), fVevent->GetMagneticField(), 100., b, bCov))) continue;
+            if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3)) continue;
+            multGlobal++;
+            
+        } //track loop
+        
+        HistTPCvsGlobalMultBeforeOutliers->Fill(multGlobal,multTPC);
+
+        if(multTPC < (-36.73 + 1.48*multGlobal) || multTPC > (62.87 + 1.78*multGlobal)){pass = kFALSE;}
+        
+        if(!pass) return;
+        HistTPCvsGlobalMultAfterOutliers->Fill(multGlobal,multTPC);
+
+    }
+
+    
+     for(Int_t itrack = 0; itrack < ntracks; itrack++){
+
+        AliAODTrack *track=dynamic_cast<AliAODTrack*>(fVevent->GetTrack(itrack));
+        if(!track) continue;
+        
+        Float_t dcaXY = track->DCA();
+        Float_t dcaZ  = track->ZAtDCA();
+         
+        TH2F* HistDCAbefore =(TH2F*)fListQAInfo->At(5);
+        HistDCAbefore->Fill(dcaZ,dcaXY);
+        
+        Double_t p = -999, pTPC = -999, pT = -999, phi = -999, eta = -999, dEdx =-999;
+        Double_t length = -999., beta =-999, tofTime = -999., tof = -999.;
+        Double_t c = TMath::C()*1.E-9;// m/ns
+
+        //cout<<"track->GetFilterMap()= "<<track->GetFilterMap()<<endl;
+        if(!track->TestFilterBit(fFilterBit)) continue;
+
+        //Float_t dcaXY = -999, dcaZ = -999;
+        p=track->P();
+        pTPC=track->GetTPCmomentum();
+        pT=track->Pt();
+        phi=track->Phi();
+        eta=track->Eta();
+        dEdx=track->GetDetPid()->GetTPCsignal();
+            
+        if ( (track->IsOn(AliAODTrack::kTOFin)) &&
+        (track->IsOn(AliAODTrack::kTIME)) &&  (track->IsOn(AliAODTrack::kTOFout))) {
+      //  if ( (track->IsOn(AliAODTrack::kTOFin)) &&
+      //              (track->IsOn(AliAODTrack::kTOFout))  ) {
+                
+                tofTime = track->GetTOFsignal();//in ps
+                length = track->GetIntegratedLength();
+                
+                tof = tofTime*1E-3; // ns
+                //cout<<"tof = "<<tof<<endl;
+                if (tof <= 0)continue;
+                //cout<<"length = "<<length<<endl;
+                if (length <= 0) continue;
+                
+                length = length*0.01; // in meters
+                tof = tof*c;
+                beta = length/tof;
+                
+                TH2F *HistBetavsPTOFbeforePID = (TH2F*)fListQAInfo->At(6);
+                HistBetavsPTOFbeforePID ->Fill(track->P()*track->Charge(),beta);
+            }//TOF signal
+
+         TH2F *HistdEdxVsPTPCbeforePID = (TH2F*)fListQAInfo->At(7);
+         HistdEdxVsPTPCbeforePID -> Fill(p*track->Charge(),dEdx); //TPC signal
+         
+         
+            //QA plot
+            TH1F *HistPhiDistBefore = (TH1F*)fListQAInfo->At(8);
+            HistPhiDistBefore->Fill(phi);
+            //
+            TH1F *HistEtaDistBefore = (TH1F*)fListQAInfo->At(9);
+            HistEtaDistBefore->Fill(eta);
+         
+
+            if(pT<0.1) continue;
+            if(TMath::Abs(eta)>0.8) continue;
+         
+            Int_t TPCNcls = track->GetTPCNcls();
+            
+            if(TPCNcls<70 || dEdx<10) continue;
+         
+            // fill QA histograms
+
+            TH2F* HistDCAAfter =(TH2F*)fListQAInfo->At(10);
+            HistDCAAfter->Fill(dcaZ,dcaXY);
+        
+            TH1F *HistPhiDistAfter = (TH1F*)fListQAInfo->At(11);
+            HistPhiDistAfter->Fill(phi);
+                
+            TH1F *HistEtaDistAfter = (TH1F*)fListQAInfo->At(12);
+            HistEtaDistAfter->Fill(eta);
+         
+            Bool_t pWithinRange = kFALSE;
+            Int_t pRange = -999;
+            TCutG *cut[3][10];
+            if(fPIDcuts){
+                TGraph *ContourCut[3][10];
+                Double_t plow[10] = {0.2,0.5,1,1.5,2,2.5,3,3.5,4,4.5};
+                Double_t phigh[10] = {0.5,1,1.5,2,2.5,3,3.5,4,4.5,5};
+               // TString species[3] = {pion,kaon,proton};
+                for(int i=0;i<3;i++){
+                    for(int j=0;j<10;j++){
+                        if(p>plow[j] && p<phigh[j]){
+                            pWithinRange = kTRUE;
+                            pRange = j;
+                            TList *Scontours = (TList*)fContourCutList->At(i);
+                            TList *Pcontours = (TList*)Scontours->At(j);
+                            if (!Pcontours || !Scontours) return;
+                            ContourCut[i][j] = (TGraph*)Pcontours->First();
+                            cut[i][j] = new TCutG("cut",ContourCut[i][j]->GetN(),ContourCut[i][j]->GetX(),ContourCut[i][j]->GetY());
+                            //ContourCut[i][j] = (TGraph *)fContourCutList->At(10*i+j);
+                        }
+                    }
+                }
+            }
+
+            for (Int_t ispecie=0; ispecie<AliPID::kSPECIESC; ++ispecie){
+                //TOF nSigma
+                Double_t nSigmaTOF=fPIDResponse->NumberOfSigmasTOF(track, (AliPID::EParticleType)ispecie);
+                Double_t nSigmaTPC=fPIDResponse->NumberOfSigmasTPC(track, (AliPID::EParticleType)ispecie);
+                if(fPIDcuts && ispecie>1 && ispecie<5 && pWithinRange){// for pions, kaons and protons only
+                    if(cut[ispecie-2][pRange]->IsInside(nSigmaTOF,nSigmaTPC)){
+                        pass = kTRUE;
+                    }
+                    else{
+                        pass = kFALSE;
+                        continue;
+                    }
+                }
+                
+                //TPC and TOF cuts, TPC TOF nsigma vs. momentum
+                if(pass){
+                    TH3 *hist1 = (TH3*)fListQAtpctof->At(ispecie);
+                    if (hist1){
+                        hist1->Fill(nSigmaTPC,nSigmaTOF,p);}
+                
+                    TH3 *hist2 = (TH3*)fListQAtpctof->At(ispecie+AliPID::kSPECIESC);
+                    if (hist2){
+                        hist2->Fill(nSigmaTPC,nSigmaTOF,pT);}
+                }
+                
+            }
+         
+
+     }//track loop
+    
+    TH2F *HistTPCvsGlobalMultAfter = (TH2F*) fListQAInfo->At(13);
+    HistTPCvsGlobalMultAfter->Fill(multGlobal,multTPC);
+    
+}
+//_________________________________________
+void AliAnalysisTaskPIDconfig::CheckCentrality(AliVEvent* event, Bool_t &centralitypass)
+{
+    // Check if event is within the set centrality range. Falls back to V0 centrality determination if no method is set
+    if (!fUseCentrality) AliFatal("No centrality method set! FATAL ERROR!");
+    Double_t centvalue = event->GetCentrality()->GetCentralityPercentile(fCentralityEstimator);
+     //cout << "Centrality evaluated-------------------------: " << centvalue <<endl;
+    if ((centvalue >= fCentralityPercentileMin) && (centvalue < fCentralityPercentileMax))
+    {
+        TH1F *hCentralityPass = (TH1F*)fListQAInfo->At(0);
+        hCentralityPass->Fill(centvalue);
+        //cout << "--------------Fill pass-------------------------"<<endl;
+        centralitypass = kTRUE;
+    }
+    
+}
+//______________________________________________________________________________
+void AliAnalysisTaskPIDconfig::SetupTPCTOFqa()
+{
+    //
+    // Create the qa objects for TPC + TOF combination
+    
+
+    //TPC and TOF signal vs. momentum
+    for (Int_t ispecie=0; ispecie<AliPID::kSPECIESC; ++ispecie){
+        fhistNsigmaP = new TH3F(Form("NsigmaP_TPC_TOF_%s",AliPID::ParticleName(ispecie)),Form("TPC n#sigma vs. TOF n#sigma %s vs. p ;TPC n#sigma;TOF n#sigma;p [GeV]",AliPID::ParticleName(ispecie)),200,-20,20,200,-20,20,60,0.1,6);
+        fListQAtpctof->Add(fhistNsigmaP);
+    }
+    //TPC and TOF signal vs. transverse momentum
+    for (Int_t ispecie=0; ispecie<AliPID::kSPECIESC; ++ispecie){
+        fhistNsigmaPt = new TH3F(Form("NsigmaPt_TPC_TOF_%s",AliPID::ParticleName(ispecie)),Form("TPC n#sigma vs. TOF n#sigma %s vs. Pt ;TPC n#sigma;TOF n#sigma;pT [GeV]",AliPID::ParticleName(ispecie)),200,-20,20,200,-20,20,60,0.1,6);
+        fListQAtpctof->Add(fhistNsigmaPt);
+    }
+
+}
+//______________________________________________________________________________
+void AliAnalysisTaskPIDconfig::SetupEventInfo()
+{
+    //event and track info
+    
+    fhistCentralityPass = new TH1F("fcentralityPass","centralityPass", 100,0,100);
+    fListQAInfo->Add(fhistCentralityPass);
+
+    fNoEvents = new TH1F("number of events","no. of events",1,0,1);
+    fListQAInfo->Add(fNoEvents);
+
+    fpVtxZ = new TH1F("pVtxZ","pVtxZ",100,-20,20);
+    fListQAInfo->Add(fpVtxZ);
+    
+    fTPCvsGlobalMultBeforeOutliers = new TH2F("TPC vs. Global Multiplicity Before","TPC vs. Global Multiplicity Before",500,0,6000,500,0,6000);
+    fListQAInfo->Add(fTPCvsGlobalMultBeforeOutliers);
+    
+    fTPCvsGlobalMultAfterOutliers = new TH2F("TPC vs. Global Multiplicity After outliers","TPC vs. Global Multiplicity After outliers",500,0,6000,500,0,6000);
+    fListQAInfo->Add(fTPCvsGlobalMultAfterOutliers);
+    
+    fhistDCABefore = new TH2F("DCA xy vs z (before)","DCA before",200,0,10,200,0,10);
+    fListQAInfo->Add(fhistDCABefore);
+    
+    fHistBetavsPTOFbeforePID = new TH2F("momentum vs beta before PID","momentum vs beta before PID",1000,-10.,10.,1000,0,1.2);
+    fListQAInfo->Add(fHistBetavsPTOFbeforePID);
+    
+    fHistdEdxVsPTPCbeforePID = new TH2F("momentum vs dEdx before PID","momentum vs dEdx before PID",1000,-10.,10.,1000,0,1000);
+    fListQAInfo->Add(fHistdEdxVsPTPCbeforePID);
+    
+    fhistPhiDistBefore = new TH1F("Phi Distribution Before Cuts","Phi Distribution Before Cuts",200,0,6.4);
+    fListQAInfo->Add(fhistPhiDistBefore);
+
+    fhistEtaDistBefore = new TH1F("Eta Distribution Before Cuts","Eta Distribution Before Cuts",200,-10,10);
+    fListQAInfo->Add(fhistEtaDistBefore);
+    
+    fhistDCAAfter = new TH2F("DCA xy vs z (after)","DCA after",200,0,10,200,0,10);
+    fListQAInfo->Add(fhistDCAAfter);
+    
+    fhistPhiDistAfter = new TH1F("Phi Distribution After Cuts","Phi Distribution After Cuts",200,0,6.4);
+    fListQAInfo->Add(fhistPhiDistAfter);
+    
+    fhistEtaDistAfter = new TH1F("Eta Distribution After Cuts","Eta Distribution After Cuts",200,-10,10);
+    fListQAInfo->Add(fhistEtaDistAfter);
+    
+    fTPCvsGlobalMultAfter = new TH2F("TPC vs. Global Multiplicity After","TPC vs. Global Multiplicity After",500,0,6000,500,0,6000);
+    fListQAInfo->Add(fTPCvsGlobalMultAfter);
+    
+//    fHistBetavsPTOFafterPID = new TH2F("momentum vs beta after PID","momentum vs beta after PID",1000,-10.,10.,1000,0,1.2);
+//    fListQAInfo->Add(